Java Sun/Oracle xerces 解析器错误?

Java Sun/Oracle xerces parser bug?

我在 JDK 1.8 rt.jar 中使用 com.sun.org.apache.xerces 解析器和 eclipse luna。解析一个 XML 文档,其属性和 CDATA 部分包含相同的字符串,由中文字符组成,如下所示:

<tns:metaData tns:name=" -  - ">
  <tns:metaValue><![CDATA[ -  - ]]></tns:metaValue>
</tns:metaData>

解析后,属性字符串如下所示:

 -  - 

即一些字符(或字符对)重复,但 CDATA 中的文本看起来不错:

 -  - 

有没有人运行遇到过类似的问题?任何帮助将不胜感激。

我想答案是 "yes, it is a bug in the Sun/Oracle version of xerces." 我刚刚用 apache 的最新版本试了一下,它成功了!

请注意,如果您要使用命令行 -Djava.endorsed.dirs="..." 开关,您需要同时添加 xerces 和 xalan 二进制文件,因为 eclipse 需要它。对于 windoze,它类似于:

 -Djava.endorsed.dirs="C:\Program Files (x86)\Java\xerces-2_11_0"
 -Djava.endorsed.dirs="C:\Program Files (x86)\Java\xalan-j_2_7_2"

干杯, 鲍勃