正在尝试确定哪个更适合我的用例...
对比了这些方法的文档,我模糊的理解是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/