通过 SimpleXML 返回 XPath 函数的结果


return result of XPath function via SimpleXML

似乎PHP SimpleXML XPath

不允许获取XPath函数的结果:

$s = new 'SimpleXMLElement('<test><node>A</node><node>B</node></test>');
var_dump($s->xpath("count(node)"));

返回一个空数组:

array(0) {
}

使用 DOM 返回预期值 2 时:

$dom = new 'DOMDocument();
$dom->loadXML('<test><node>A</node><node>B</node></test>');
$xpath = new 'DOMXPath($dom);
var_dump($xpath->evaluate("count(node)"));

float(2.0)

有没有办法直接用SimpleXML做同样的事情?

PHP 的

SimpleXML 仅适用于返回节点集的查询。 count(...)返回不支持的标量值。使用功能更强大的 DOMXPath 或计算结果数组中的对象:

var_dump(count($s->xpath("node")));

国际(2)