php - DOMXPath::evaluate 和 DOMXPath::query 之间有什么区别?

标签 php dom xpath domxpath evaluate

正在尝试确定哪个更适合我的用例...

对比了这些方法的文档,我模糊的理解是evaluate返回类型化结果但 query没有。此外,query示例包括遍历许多结果,但 evaluate示例假定单一类型的结果。

还是不够聪明!任何人都可以解释(尽可能接近外行的术语)你什么时候会使用一个或另一个 - 例如上面提到的多重/单一结果会一直如此吗?

最佳答案

DOMXPath::query() 仅支持返回节点列表的表达式。 DOMXPath::evaluate() 支持所有有效的表达式。官方方法也被命名为 evaluate():http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator

选择 div 内的所有 p 元素://div//p

选择当前文档a元素中的所有href属性://a/@href

您可以使用 string() 函数将节点列表的第一个元素转换为字符串。这不适用于 DOMXpath::query()。

选择文档的标题文本:string(/html/head/title)

还有其他函数和运算符会改变表达式的结果类型。但它始终是明确的。您将始终知道结果是什么类型。

关于php - DOMXPath::evaluate 和 DOMXPath::query 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793816/

相关文章:

php - 日期不按 laravel 中指定的那样工作

php - 如何将这个字符串转换为数组?

Javascript:在存在其他嵌套标签的范围内获取纯文本

java - 如何在没有标签的情况下选择 HTML 标签中的文本(JSoup)

java - 在 XML 文件中添加新节点

python - 如何获取具有两个类名的表中的元素计数?

php - Laravel 帐户详细信息更新

php - 从 PHP 数组中删除零值

javascript - 听双击不是点击

html - 如何在不调用 "next_element"方法的情况下使用 Nokogiri 选择下一个元素?