选择给定节点下类型的所有节点

时间:2019-04-17 05:49:58

标签: java xpath

我是XNode的新手,想选择给定节点下所有类型的节点。在下面的示例中,我正在寻找foo节点下面的所有bar节点。

 <node>
    <foo>
     <bar/>
     <div><bar/></div>
     <ul>
      <li><bar/>
     </ul>
     <p>foobar</p>
    </foo>
    <bar/>
</node>

我的应用程序获取foo节点(org.w3c.dom.Node):

NodeList nodeList = (NodeList) xpath.evaluate("//bar", fooNode, XPathConstants.NODESET);

即使我通过了该节点而不是整个文档,也返回了整个文档的所有bar节点,而不是从fooNode返回。

2 个答案:

答案 0 :(得分:1)

  

返回整个文档的所有bar节点,甚至不从fooNode返回   虽然我通过了节点而不是整个文档。

这是absolute location path作为//bar的预期行为。使用相对位置路径作为.//bardescendant-or-self::bardescendant::bar

答案 1 :(得分:0)

我不确定这是您要找的东西,但是

//foo/descendant-or-self::bar

选择</bar>中的3个<foo>