PHP / XML Удалить ребенка в изображение Карта сайта

1

У меня есть файл изображения 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);
    }

Кто может мне помочь?

Теги:
sitemap

1 ответ

0

Используйте 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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню