xml - StreamResult - 走动空间bug

时间:2011-11-23 18:11:24

标签: java xml-parsing

我刚遇到一个有趣的bug。我试图使用user.home来保存路径;事情是win xp中的user.home以

开头
  

X:\ Documents and Settings \

......确保空间取而代之。例外是

  

java.io.FileNotFoundException:C:\ Documents%20and%20Settings ...

...所以,正如我所看到的,所有空格都被'%'取代;我想这是一个编码问题,但我不太确定。错误“5077403”页面不提供任何解决方法;但我希望应该有一些?

3 个答案:

答案 0 :(得分:1)

尝试更新您正在使用的XML库的版本。根据您引用的错误报告,它在Java 1.5中标记为已修复。

你看到的%实际上是一个有效的URL编码 - %20代表一个空格。

请参阅我在http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html个人博客文章顶部发布的有关这些图书馆版本的部分详细信息。

答案 1 :(得分:0)

一个hack(应该适用于大多数Win XP系统)就是使用这样的东西:

String homeDir = System.getProperty("user.home");
homeDir = homeDir.replace("Documents and Settings", "DOCUME~1");

如果代码恰好在Windows 7或非Windows环境中运行,这将使homeDir保持不变。

答案 2 :(得分:0)

此错误最简单,最合理的修复/解决方法是使用解码来替换结果系统ID。

streamResult.setSystemId(java.net.URLDecoder.decode(streamResult.getSystemId(), "UTF-8"));

这将解码系统ID并用空格替换%20。

相关问题