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

时间:2014-10-13 15:43:54

标签: xml r xpath

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

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

我想检索b节点的索引,其值为&#34; wvu&#34;相对于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

1 个答案:

答案 0 :(得分:1)

我不知道在单个XPATH中执行此操作的方法,但您可以将节点查找和索引计算分解为两个单独的逻辑步骤:

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