我有一个像下面的XML
<entries>
<entry>
<title lang="en">Sample</title>
<entrydate>0</entrydate>
<contents>0</contents>
<entrynum>0</entrynum>
</entry>
<entry>
<title lang="fr">Sample</title>
<entrydate>1</entrydate>
<contents>1</contents>
<entrynum>1</entrynum>
</entry>
</entries>
PHP中是否可以根据标题
entry
属性删除父节点(lang
)?我只需要保留en
,所以在这种情况下,我需要获取没有第二个entry
节点的XML。我尝试环顾四周,但找不到任何解决方案...
最佳答案
您需要使用DOMDocument
类将字符串解析为XML文档。然后使用DOMXpath
类在文档中查找目标元素,并使用DOMNode::removeChild()
从文档中删除所选元素。
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXpath($doc);
// select target entry tag
$entry = $xpath->query("//entry[title[@lang='fr']]")->item(0);
// remove selected element
$entry->parentNode->removeChild($entry);
$xml = $doc->savexml();
您可以在demo中查看结果