获取不在具有属性 X 的节点内的 html 个节点
Get html nodes that are not within a node with attribute X
我有以下 xpath 查询,但我不确定如何进行查询,所以它只查找具有属性 pi-repeat
的项目,而不是具有该属性的子项目。
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//*[@pi-repeat]') as $node) {
// Do stuff
}
Html 示例:
<body>
<div pi-repeat="thing1">
<div pi-repeat="sub-item"></div>
</div>
<div class="a-class">
<div pi-repeat="thing2">
<div pi-repeat="sub-item"></div>
</div>
</div>
</body>
正如您在这里看到的那样,有四个 pi-repeat
属性,我希望我的查询仅 select 不在元素 pi-repeat
属性中的那些。
在这种情况下,只有 thing1
和 thing2
会得到 selected。
下面 XPath 中的第二个谓词将完成这项工作。它过滤掉祖先元素具有 pi-repeat
属性的元素:
//*[@pi-repeat][not(ancestor::*[@pi-repeat])]
我有以下 xpath 查询,但我不确定如何进行查询,所以它只查找具有属性 pi-repeat
的项目,而不是具有该属性的子项目。
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//*[@pi-repeat]') as $node) {
// Do stuff
}
Html 示例:
<body>
<div pi-repeat="thing1">
<div pi-repeat="sub-item"></div>
</div>
<div class="a-class">
<div pi-repeat="thing2">
<div pi-repeat="sub-item"></div>
</div>
</div>
</body>
正如您在这里看到的那样,有四个 pi-repeat
属性,我希望我的查询仅 select 不在元素 pi-repeat
属性中的那些。
在这种情况下,只有 thing1
和 thing2
会得到 selected。
下面 XPath 中的第二个谓词将完成这项工作。它过滤掉祖先元素具有 pi-repeat
属性的元素:
//*[@pi-repeat][not(ancestor::*[@pi-repeat])]