如何使用php删除XML元素

时间:2017-07-28 17:40:46

标签: php xml simplexml removechild

我仍然非常擅长将simpleXML与PHP一起使用。我正在尝试使用simpleXML从站点地图XML文档中删除段。

该文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://www.test.com/</loc>
        <priority>1.0</priority>
    </url>
    <url>
        <loc>http://www.test.com/test.html</loc>
        <priority>0.6</priority>
    </url>
</urlset>

我想提供一个特定的<loc>网址,在xml文档中搜索该地址,然后删除包含我正在搜索的网址的父<url>元素。

以下是我可以使用的代码,但我无法使其工作。      

 $xml = simplexml_load_file('path-to-my-sitemap.xml');
 $addressToRemove = "http://www.test.com/test.html";
 $remove = simplexml_load_string("<url><loc>$addressToRemove</loc><priority>0.6</priority></url>");

 xml_remove($xml, $remove);

 $str = $xml->asXML();

 echo $str;
 ?>


 function xml_remove(SimpleXMLElement $xml, SimpleXMLElement $removeFrom) {
     $mainDom = dom_import_simplexml($xml);
     $removeFromDom = dom_import_simplexml($removeFrom);
     $mainDom->removeChild($removeFromDom);
 }

运行我的脚本后,应该输出:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://www.test.com/</loc>
        <priority>1.0</priority>
    </url>
</urlset>

有谁知道我在这里做错了什么?

0 个答案:

没有答案