我有一个像下面的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中查看结果

07-28 01:20
查看更多