我知道在 PHP 中对 DOM 执行 XPath 查询的唯一方法是DOMXPath http://php.net/manual/fr/class.domxpath.php,它仅适用于DOMDocument
:
public __construct ( DOMDocument $doc )
是否有类似的机制来搜索DOMElement
?
问题是,我需要搜索相对于某个对象的任意 XPath(我无法控制)DOMElement
.
我尝试过这样做:
$domElement->getNodePath() . '/' . $xPath;
但是如果 XPath 包含|
(or字符),这种方法不起作用。
就在这里。该元素也是文档的一部分,因此您使用文档的 xpath 对象,但是当您运行查询时,有第二个参数,它是第一个参数中的查询所在的上下文节点resolved to:
// query all child-nodes of $domElement
$result = $xpath->query('./*', $domElement);
Resolved意思是,如果 xpath 是:
- 相对的,相对于那个
$domElement
上下文节点。
- 绝对,它解析为文档节点(仍然/再次)。
Only relative路径适用于此处的上下文,这就是为什么我在前面添加了一个点作为前缀:./*
。一个简单的*
也会起作用,只是不会让这一点特别明显。
See DOMXpath::query() http://php.net/DOMXpath.query.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)