XPath解析失败,文本功能使用dom4j

问题描述 投票:0回答:1

我的输入xml是

          String xml=  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
            "<disks-array>\n" +
              "<array-item>\n" +
               " <value>\n" +
                  "<scsi>\n" +
                   "<bus>0</bus>\n" +
                    "<unit>0</unit>\n" +
                  "</scsi>\n" +
                  "<backing>\n" +
                   "<vmdk_file>[909_TCUP_02] u999orcat017t/u999orcat017t.vmdk</vmdk_file>\n" +
                    "<type>VMDK_FILE</type>\n" +
                  "</backing>\n" +
                  "<label>Hard disk 1</label>\n" +
                  "<type>SCSI</type>\n" +
                  "<capacity>107374182400</capacity>\n" +
                "</value>\n" +
                "<key>2000</key>\n" +
              "</array-item>\n" +
            "</disks-array>"

并且XPath过滤器为

"//array-item[contains(./value/backing/vmdk_file/text(),'u999orcat017t/u999orcat017t.vmdk')]"

这是我的解析和过滤代码

        Document doc = DocumentHelper.parseText(xml);

        XPath xp = DocumentHelper.createXPath(xpathQuery);

        // evaluate the xpath
        Object xpResult = xp.evaluate(doc);

理想情况下,应该返回数组项/ value / vmdk_file包含给定文本的文本。但是它给了我空字符串。

我正在使用dom4j 1.61和jaxen 1.1.1版本库。

出了什么问题?

java xpath xml-parsing dom4j
1个回答
0
投票

最后经过调试多个小时,终于找出了错误解析xml的根本原因。文本值分为多个节点,而不是单个节点。查看突出显示的图片

enter image description here

结果证明这是dom4j库中的错误,该错误仍在打开中

© www.soinside.com 2019 - 2024. All rights reserved.