Xml 使用XPath获取相对于父节点的节点索引

Xml 使用XPath获取相对于父节点的节点索引,xml,r,xpath,Xml,R,Xpath,我需要从XML文档中检索特定节点的索引。该任务与此处()的任务类似,但我无法将建议的解决方案应用于“多个请求的子节点”场景。考虑下面的示例XML文档 <a> <b>zyx</b> <b>wvu</b> <b>tsr</b> <b>wvu</b> </a> zyx wvu tsr wvu 我想检索值为“wvu”的b节点相对于a的索引,也就是说,我想得到一个向量[2,4]。

我需要从XML文档中检索特定节点的索引。该任务与此处()的任务类似,但我无法将建议的解决方案应用于“多个请求的子节点”场景。考虑下面的示例XML文档

<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>wvu</b>
</a> 

zyx
wvu
tsr
wvu
我想检索值为“wvu”的b节点相对于a的索引,也就是说,我想得到一个向量[2,4]。使用XPath 1.0可以做到这一点吗?具体地说,我在R中使用XML包

/编辑

以下是一个示例文档:

library(XML)
file1 <- htmlParse("<a><b>zyx</b><b>wvu</b><b>tsr</b><b>wvu</b></a> ")
xpathSApply(file1, "count(a/b[.='wvu']/preceding-sibling::*)+1")
[1] 1
库(XML)

file1我不知道如何在单个XPATH中实现这一点,但您可以将节点查找和索引计算分解为两个独立的逻辑步骤:

sapply(getNodeSet(file1, "//a/b[.='wvu']"), 
    xpathSApply, "count(./preceding-sibling::*)+1")
# [1] 2 4