xpath - 使用 XPath 查找节点的位置

标签 xpath

有人知道如何使用 XPath 获取节点的位置吗?

假设我有以下 xml:

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

我可以使用以下 xpath 查询来选择第三个 节点 (tsr):

a/b[.='tsr']

这一切都很好,但我想返回该节点的序数位置,例如:

a/b[.='tsr']/position()

(但还需要更多工作!)

这可能吗?

编辑:忘记提及我使用的是 .net 2,所以它是 xpath 1.0!

<小时/>

更新:最终使用 James Sulakexcellent answer 。对于那些感兴趣的人,这是我在 C# 中的实现:

int position = doc.SelectNodes("a/b[.='tsr']/preceding-sibling::b").Count + 1;

// Check the node actually exists
if (position > 1 || doc.SelectSingleNode("a/b[.='tsr']") != null)
{
    Console.WriteLine("Found at position = {0}", position);
}

最佳答案

尝试:

count(a/b[.='tsr']/preceding-sibling::*)+1.

关于xpath - 使用 XPath 查找节点的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352066/

相关文章:

javascript - 是否可以从 xpath 节点更改 css?

xpath - 使用text()检索包含的xpath文本

python - 创建一个 xpath 增加的 for 循环

多种类型的 Xpath 子项

xpath - 在使用 concat 的 Xpath 1.0 和 2.0 表达式中需要帮助

c# - XPath对于带有不符合特定条件的子节点的所有节点?

python - 选择并修改特定文本后的 xpath 节点

python - 使用 Xpath、Python 从网站提取信息

xml - 使用 XMLStarlet 替换 XML 值内的子字符串

xml - Xpath返回值列表