gpt4 book ai didi

xml - 如何在 XPath 中识别具有相同名称的多个元素?

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:47 24 4
gpt4 key购买 nike

如果我有一个包含多个同名元素的文档怎么办——例如,我该如何检索第二个元素?

<doc>
...
<element name="same">foo</element>
...
<element name="same">bar</element>
...
<element name="same">baz</element>
...
</doc>

我希望像//elem[@name='same'][2] 这样的东西能起作用。

此外,我如何从 xpath 中的最后一个元素中找到具有可变数量的同名元素的第二个元素

最佳答案

[ ] 的优先级高于//(而“//”实际上只是缩写,不是运算符)。之所以如此,是因为根据 XPath 1.0 Spec ,

“//是/descendant-or-self::node()/”的缩写

及以后:

"注意:位置路径//para[1]与位置路径/descendant::para[1]。后者选择第一个后代 para 元素;前者选择所有作为其父元素的第一个 para 子元素的后代 para 元素。"

因此,XPath 表达式:

//element[@name='same'][2]

意思是:

选择文档中名为“element”的任何元素,其属性“name”的值为“same”,并且此元素是其父元素的第二个此类子元素。

你想要的是:

(//element[@name='same'])[2]

请注意括号,它会覆盖 [] 的更高优先级。

类似地,最后一个节点由以下 XPath 表达式选择:

(//element[@name='same'])[last()-1]

最后,一个必要的警告:使用“//”缩写非常昂贵,因为它会导致遍历整个(子)树。只要文档的结构已知,建议使用更具体的构造(位置路径)。

关于xml - 如何在 XPath 中识别具有相同名称的多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/321805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com