繁体   English   中英

XPath - 如何从不确定的深度获取父节点

[英]XPath - How to get parent node from undetermined depth

让我们假设我有一个如下所示的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<root identifier="m1">
  <orgs default="toc00001">
    <org identifier="toc00001">
      <item identifier="itm00012">
        <title>aaa</title>
        <item identifier="a123">
          <title>bbbb</title>
        </item>
      </item>
      <item identifier="itm00001">
        <title>Some text</title>
        <item identifier="itm00027">
          <title>Something</title>
          <item identifier="itm00028">
            <title>Another text</title>
          </item>
        </item>
      </item>
    </org>
  </orgs>
</root>

我在代码中有一个标识符为itm00028的节点。 我想使用xpath 1.0获取父项(直接位于 org 节点下方的项)。

就像是:

//item[@identifier="itm00028"]/ancestor::item/some other condition

我实际上会先获取org ,然后再获取项目:

//item[@identifier="itm00028"]/ancestor::org/item

所以你要确定你真正想要的是什么。

怎么样:

//item[@identifier="itm00028"]/../../item[1]/title

以及之前的评论:

//item[@identifier="itm00028"]/ancestor::item[1]/title

没有一个建议的回应是我想要的。

//item[@identifier="itm00028"]/ancestor::item[1]假设我需要事先知道深度。 我在问题中指出深度可以是任意的,从 1 到大数。

//item[@identifier="itm00028"]/ancestor::org/item不正确,因为它检索第一个子项节点。 我需要实际包含我开始的项目的节点。

//item[@identifier="itm00028"]/../../item[1]/title再次假设 xml 的固定结构。

这就是我需要的:

//org/item[descendant::item[@identifier="itm00028"]]
ancestor::org/child::item[.//item[@identifier = 'itm00028']]

或者

//item[@identifier="itm00028"]/ancestor::org/child::item[.//item[@identifier = 'itm00028']]

让我知道这是否是您要找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM