[英]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.