What is the difference between DOMXPath::evaluate and DOMXPath::query?
尝试确定哪个更适合我的用例...
在比较了这些方法的文档之后,我模糊的理解是
还是不多聪明!任何人都可以解释(尽可能接近外行的用语)何时使用一种或另一种-例如上面提到的多个/单个结果是否总是这样?
DOMXPath :: query()仅支持返回节点列表的表达式。 DOMXPath :: evaluate()支持所有有效的表达式。官方方法也命名为Evaluate():http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator
选择
在当前文档的
您可以使用
选择文档的标题文本:
还有其他函数和运算符将更改表达式的结果类型。但这始终是明确的。您将始终知道结果是什么类型。
但是
另一方面,
1 2 | $xpath->evaluate("1 = 0"); // FALSE $xpath->evaluate("string(1 = 0)"); //"false" |
事实证明,选择属性
ThW的答案是正确的,即某些表达式不适用于
1 2 | $xpath->query("string(//div/@id)") // DOMNodeList of length 0 $xpath->evaluate("string(//div/@id)") // string with the found id |