XPath查询-选择相对顶级节点
我试图迭代XML文档中可能嵌套的某些元素,但在迭代这些元素时,可能会从树中删除一些元素。我认为最好的方法是递归地执行此操作,因此我尝试提出一个XPath查询,该查询将选择相对于当前节点的所有顶级节点//foo[notancestor::foo]在文档级别工作得很好,但我正试图从一个相对查询中找出如何做到这一点XPath查询-选择相对顶级节点,xpath,Xpath,我试图迭代XML文档中可能嵌套的某些元素,但在迭代这些元素时,可能会从树中删除一些元素。我认为最好的方法是递归地执行此操作,因此我尝试提出一个XPath查询,该查询将选择相对于当前节点的所有顶级节点//foo[notancestor::foo]在文档级别工作得很好,但我正试图从一个相对查询中找出如何做到这一点 <foo id="1"> <foo id="2" /> <foo id="3"> <foo id="4">
<foo id="1">
<foo id="2" />
<foo id="3">
<foo id="4">
<bar>
<foo id="5">
<foo id="6" />
</foo>
<foo id="7" />
</bar>
</foo>
</foo>
</foo>
如果当前节点是foo3,我只想选择foo4。当当前节点为foo4时,我只想选择foo5和foo7
我想我正在尝试选择当前节点的任何后代foo节点,但在当前节点和我选择的节点之间没有任何祖先foo节点。我的难题是,如果我们已经在一个foo节点中,notancestor::foo就没有帮助了。从一个集合/枚举中删除您正忙于遍历的项时,最好的方法是将键/引用加载到一个单独的列表中,并在完成遍历后将它们删除。给定start元素的id,你可以找到它的下一级foo
./descendant::foo[ancestor::foo[1]/@id='3']
你找到答案了吗?我想我找到了一个不同的解决方案。我已经有一年多没有参与这个项目了,所以我不确定我最后做了什么…如何做同样的事情,但不指定id属性,只依赖于当前节点。?