我有一个类似谷歌的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>