vtd-xml evalXPathToString 奇怪 behavoir/not 工作

vtd-xml evalXPathToString strange behavoir/not working

在下面的第二个例子中,为什么 evalXPathToString 打印 junk1.45 而不是 1.45

我正在使用 2.12 版的 vtd-xml。

String xml = "<xmlDoc><noele>junk</noele><valss>1.45</valss></xmlDoc>";

VTDGen vtdGen = new VTDGen();
vtdGen.setDoc(xml.getBytes(StandardCharsets.UTF_8));
vtdGen.parse(true);
VTDNav vtdNav = vtdGen.getNav();

AutoPilot autoPilot = new AutoPilot(vtdNav);
autoPilot.selectXPath("/xmlDoc/valss");
System.out.println(autoPilot.evalXPathToNumber()); // prints 1.45

autoPilot = new AutoPilot(vtdNav);
autoPilot.selectXPath("/xmlDoc/valss");
System.out.println(autoPilot.evalXPathToString()); // prints junk1.45

我已经在最新的版本上试过了...return 1.45...

这似乎是 2.12 中引入的错误之一,随后被报告并修复。引入它的原因是因为 2.12 旨在完全支持混合内容类型的 XPath 评估...也就是说,如果您将 xpath "/xmlDoc" 评估为字符串,它 returns junk1 .45..

此外,此错误仅涉及 evalXPathToString...与其他三种评估方法无关...我相信 /xmlDoc/valss/text() 将是一种解决方法...

如果不想等到2.13正式发布才修正这个issue..你可以下载文件并按照以下步骤自己构建一个jar...

  1. 获取补丁...转到 vtd-xml 的 cvs 主机站点... http://vtd-xml.cvs.sourceforge.net/viewvc/vtd-xml/ximple-dev/com/ximpleware/LocationPathExpr.java

  2. 将文件拖放到 com.ximpleware

  3. 运行 windows 上的 build.bat... 或您的 unix 机器上的任何等效项

  4. 获取新的 jar 文件并替换类路径中的旧 2.12 jar...

让我知道它是否适合你...