XPath返回一个元素,但不返回另一个元素?

时间:2019-12-16 19:18:45

标签: java xml xpath dom4j

我正在使用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

1 个答案:

答案 0 :(得分:1)

XML必须具有单个根元素;您有两个:fieldsrecords

将它们包装在一个通用根目录中,以获得所需的结果。

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

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

使用

//records

另请参见