ai didi

xpath - 紧接在前的 sibling 必须包含属性

转载 作者:行者123 更新时间:2023-12-03 17:36:41 24 4
gpt4 key购买 nike

这是我的 XML 文件:

<w type="fruit-hard">apple</w>
<w type="fruit-soft">orange</w>
<w type="vegetable">carrot</w>

我需要找到胡萝卜的前一个兄弟,其类型是水果软。在 Chrome(本地加载的 XML 文件)中,当我尝试
$x("//w[@type='vegetable']/preceding-sibling::w[1]")

我得到了我想要的“橙色”元素节点,但是我如何要求它的类型是“水果软”?我的尝试(如下)返回“假”。
$x("//w[@type='vegetable']/preceding-sibling::w[1] and preceding-sibling::w[@type='fruit-soft']")

最佳答案

你原来的 XPath ...

//w[@type='vegetable']/preceding-sibling::w[1]

... 相当于
//w[@type='vegetable']/preceding-sibling::w[position()=1]

.您可以根据需要向谓词添加其他条件:
//w[@type='vegetable']/preceding-sibling::w[position()=1 and @type='fruit-soft']

或者您可以添加一个单独的谓词
//w[@type='vegetable']/preceding-sibling::w[1][@type='fruit-soft']

请注意,此尝试:
//w[@type='vegetable']/preceding-sibling::w[1] and preceding-sibling::w[@type='fruit-soft']

返回 false因为 and 两侧的零件分别计算,转换为类型 boolean , 并结合产生最终结果。假设对其进行评估的上下文节点是文档根,则永远不会有与 preceding-sibling::w[@type='fruit-soft'] 匹配的节点。 .此外,即使存在这样的节点,该表达式也不要求匹配第一部分的节点与匹配第二部分的节点相同。

关于xpath - 紧接在前的 sibling 必须包含属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363564/

24 4 0
文章推荐: delphi - 具有 TabOrder 属性的 TSpeedButton
文章推荐: xml - xpath中是否有一个起始于/contains函数来搜索节点名称
文章推荐: xml - xpath concat函数将XML数据转换为文本
文章推荐: xpath - 遍历所有Xpath结果
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com