gpt4 book ai didi

xpath - 我如何制定此 XPath 表达式来选择 sibling ?

转载 作者:行者123 更新时间:2023-12-03 15:51:59 26 4
gpt4 key购买 nike

如何为以下 HTML 制定 XPath 表达式以获取 a 节点(value A)之后的第一个输入节点的属性值:

<a href="http://www.link.com">link</a>
<input value="value A" />
<input value="value B" />

我试过:

//input[(preceding-sibling::a[1])]/@value

但是当我只想要 a 节点是最近的前一个兄弟节点的属性时,这会获取两个输入节点的值属性。

最佳答案

您在错误的节点上使用了 [1] 谓词。您需要第一个具有 preciding-sibling::a 的输入,而不是给定级别的第一个 a 元素之后的所有输入。

这应该会产生正确的结果://a/following-sibling::input[1]/@value

这意味着:对于在文档中的任何级别找到的每个元素 a,选择跟随它的第一个 input 元素,同时是它的兄弟元素。然后读取它的 value 属性。

对于这个输入:

<xml>
<p>
<input value="value A" />
<a href="http://www.link.com">link</a>
<input value="value B" />
<input value="value C" />
</p>
<p>
<a href="http://www.link.com">link</a>
<input value="value D" />
<input value="value E" />
<a href="http://www.link.com">link</a>
<input value="value F" />
</p>
</xml>

它返回:

  • B值
  • 值(value)D
  • 值(value)F

编辑

只要 a 和它后面的第一个 input 之间没有元素,这就可以工作。

例如,输入如下:

    <a href="http://www.link.com">link</a>
<strong>OMG NOEZ!</strong>
<input value="value A" />

值 A 仍然被选中

如果没问题,就保留上面的表达式。如果不是,则修改为过滤其他元素:

//a/following-sibling::*[1][self::input]/@value

这会选择 a 的第一个后续同级标签,无论标签是什么,只有在选择标签后才会检查实际标签。这样就不会选择在同一级别更远的输入

关于xpath - 我如何制定此 XPath 表达式来选择 sibling ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126120/

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