首页 文章

XPath查询 - 选择相对顶级节点

提问于
浏览
2

我试图迭代可能嵌套的XML文档中的一些元素,但是当我迭代它们时,我可能会从树中删除一些元素 . 我认为最好的方法是递归地执行此操作,因此我尝试提出一个XPath查询,它将选择相对于当前节点的所有顶级节点 . // foo [not(ancestor :: foo)]在文档级别工作得很好,但我试图弄清楚如何从相对查询中做到这一点 .

<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>

如果当前节点是foo#3,我只想选择foo#4 . 当前节点是foo#4时,我只想选择foo#5和foo#7 .

我想我正在尝试选择当前节点的任何后代foo节点,但是当前节点和我正在选择的节点之间没有任何祖先foo节点 . 我的难题是如果我们已经在foo节点内,而不是(祖先:: foo)没有帮助 .

2 回答

  • 1

    给定start元素的id,你可以找到它的下一级foo .

    ./descendant::foo[ancestor::foo[1]/@id='3']
    
  • 0

    从正忙于遍历的集合/枚举中删除项目时的最佳方法是将键/引用加载到单独的列表中,并在完成遍历后将其删除 .

相关问题