gpt4 book ai didi

php - 使用xpath和php选择所有href属性和选择所有具有href属性的 anchor 元素之间的区别

转载 作者:行者123 更新时间:2023-12-03 16:13:01 24 4
gpt4 key购买 nike

鉴于在 html 文档中,所有 anchor 元素都设置了一个 href 属性:

以下 xpath 查询有什么区别

情况1:

//@href

案例2:
//a/@href

案例3:
*/a/@href

在我的情况下:
//@href返回包含在 href 属性中的所有数据。
//a/@href什么都不返回,但我希望它返回与 //@href 相同的值
*/a/@href什么都不返回,但我希望它返回与 //@href 相同的值和 //a/@href
我担心我严重误解了这些查询是如何工作的。有没有人可以让我直截了当。预先感谢您的帮助。

最佳答案

What is the difference between the following xpath queries

Case 1:

//@href


这将选择所有 href XML 文档中的属性节点。

Case 2:

//a/@href 


这将选择所有 href属于任何名为 a 的元素的属性那是没有命名空间的。

Case 3:

*/a/@href


这将选择所有 href属于任何名为 a 的元素的属性它没有命名空间,并且是当前(上下文)节点的孙子节点。

很可能你想写 :
//*/a/@href

这将选择所有 href属于任何名为 a 的元素的属性不在命名空间中并且其父元素是一个元素。

In my situation:

//@href returns all the data contained in the href attribute.

//a/@href returns nothing but I expect it to return the same as //@href

*/a/@href returns nothing but I expect it to return the same as //@href and //a/@href

I fear that I am grossly misunderstanding how these queries work. Is there anybody that can set me straight. Thank you in advance for your assistance.



一种非常常见的情况是 XML 文档具有默认 namespace 。这很可能是导致您出现问题的原因 .在这种情况下,没有 a文档中存在“无命名空间”中的元素以及具有 a 的任何 XPath 表达式作为位置步骤不选择任何内容。

除此之外,这三个表达式并不等价 .
//@href//a/@href
如果文档中除了 a 之外还有其他元素,可以选择不同的节点集有 href属性,或者文档是否在默认命名空间中。在最后一种情况下,第二个表达式不选择任何内容。
//a/@href//*/a/@href
如果文档的顶部元素是 a,则可以选择不同的节点集有一个 href属性。 href此顶部元素的属性由第一个 XPath 表达式选择但未被第二个选择,因为顶部元素的父元素不是元素(它是根节点 /)。

关于php - 使用xpath和php选择所有href属性和选择所有具有href属性的 anchor 元素之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772451/

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