我需要从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
答案 0 :(得分:1)
我不知道在单个XPATH中执行此操作的方法,但您可以将节点查找和索引计算分解为两个单独的逻辑步骤:
sapply(getNodeSet(file1, "//a/b[.='wvu']"),
xpathSApply, "count(./preceding-sibling::*)+1")
# [1] 2 4