У меня есть файл изображения XML для Google:
<?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 text()
в xpath для поиска определенного содержимого:
//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>