PHP使用XML DOM解析时如何筛选仅含id="2"属性的标签元素
第二种需求实现方案
你只需要把XPath筛选条件反转,筛选出所有不带有id="2"属性的<nazwa_waluty>节点,删除这些节点即可:
<?php $doc4 = new DOMDocument(); $doc4->preserveWhiteSpace = false; $doc4->load('output.xml'); $xpath4 = new DOMXPath($doc4); // 筛选所有无id="2"属性的nazwa_waluty节点 $nodesToRemove = $xpath4->query('//*/pozycja/nazwa_waluty[not(@id="2")]'); foreach($nodesToRemove as $node) { // 若需要删除对应整条pozycja汇率条目,使用下面这行 $node->parentNode->parentNode->removeChild($node->parentNode); // 若仅需要删除不带id="2"的nazwa_waluty标签本身,替换为下面这行 // $node->parentNode->removeChild($node); } $doc4->formatOutput = true; $doc4->save('output4.xml');
逻辑说明
核心是使用XPath的not()运算符做反向匹配,和你已实现的第一种需求逻辑完全对称,仅调整了筛选规则,无需修改其他交互逻辑。
内容的提问来源于stack exchange,提问作者Kacper Woźniak
相关产品推荐
相关产品推荐

