首页 > 解决方案 > XPath 返回一个元素但不返回另一个?

问题描述

我正在使用 Java 使用 XPath 提取值。我能够提取元素下的元素fields,但records不返回元素下的元素。

XML如下:

    <?xml version="1.0" ?>
    <qdbapi>
        <action>****</action>
        <errcode>0</errcode>
        <errtext>No error</errtext>
        <qid>****</qid>
        <qname>****</qname>
      <table>
        <fields>            
        <field id="19" field_type="text" base_type="text">
        </field>
        </fields>
        <records>
        <record>
        <f id="6">1</f>
        </record>
        </records>
    </table>
  </qdbapi>

下面的代码:

XMLDOMDocObj.selectNodes("//*[local-name()='fields']")//21 fields returned
XMLDOMDocObj.selectNodes("//*[local-name()='records']")//no records are returned

标签: javaxmlxpathdom4j

解决方案


XML 必须有一个根元素;你的有两个:fieldsrecords

将它们包装在一个共同的根中以获得您期望的结果。

此外,如果您的 XML 没有名称空间,则没有理由打败它们。代替

//*[local-name()='records']

利用

//records

也可以看看


推荐阅读