PHP/XML删除图像Sitemap中的子项


PHP/XML Delete Child in image Sitemap

我有一个类似谷歌的XML图像Sitemap:

   <?xml version="1.0" encoding="UTF-8"?>
<urlset
    xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
    <url>
        <loc>http://www.domain.de</loc>
        <image:image>
            <image:loc>http://www.domain.de/image1.jpg</image:loc>
            <image:title>image 1</image:title>
        </image:image>
        <image:image>
            <image:loc>http://www.domain.de/image2.jpg</image:loc>
            <image:title>image 2</image:title>
        </image:image>
    </url>
</urlset>

现在我将删除一个"image:image"子项,其中"image:loc"类似于"http://www.domain.de/image2.jpg"。如何使用php实现这一点?

我测试了如下代码:

$xmlPageUrl="http://www.domain.de/image2.jpg";    
foreach($sitemap->xPath('//url[image:image/image:loc="' . $xmlPageUrl . '"]') as $node) {
      $sitemap->parentNode->removeChild($node);
    }

谁能帮我?

Use可以在xpath中使用text()来搜索特定内容:

//image:image/image:loc[text()="http://www.domain.de/image2.jpg"]

所以:

$doc = new DOMDocument;
$doc->loadxml($xmlString);
$xpath = new DOMXpath($doc);
$xmlPageUrl="http://www.domain.de/image2.jpg";    
foreach($xpath->query('//image:image/image:loc[text()="'.$xmlPageUrl.'"]') as $node) {
    $node->parentNode->parentNode->removeChild($node->parentNode);
}

XML现在包含:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
    <url>
        <loc>http://www.domain.de</loc>
        <image:image>
            <image:loc>http://www.domain.de/image1.jpg</image:loc>
            <image:title>image 1</image:title>
        </image:image>
    </url>
</urlset>