让我们假设我有一个如下所示的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
答案 0 :(得分:1)
我实际上先得到org
然后得到项目:
//item[@identifier="itm00028"]/ancestor::org/item
所以你要确定你真正想要的是什么。
答案 1 :(得分:0)
怎么样:
mydata %>%
arrange(desc(id))
以及之前的评论:
//item[@identifier="itm00028"]/../../item[1]/title
答案 2 :(得分:0)
建议的回答都不是我想要的。
//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"]]
答案 3 :(得分:0)
ancestor::org/child::item[.//item[@identifier = 'itm00028']]
或
//item[@identifier="itm00028"]/ancestor::org/child::item[.//item[@identifier = 'itm00028']]
如果您正在寻找它,请告诉我。