Создание карты сайта с помощью DOMDocument выдает ошибку разбора - PullRequest
2 голосов
/ 15 июня 2011

Я создаю карту сайта в XML, она хорошо работает с одной отображаемой записью, но при включении 1+ записей выдает ошибку:

Ошибка синтаксического анализа XML: нежелательная после элемента документа

Который показывает этот код здесь:

<?xml version="1.0" encoding="UTF-8"?>
<url><loc>http://www.mywebsite.com/page/1</loc><changefreq>daily</changefreq><priority>0.6</priority></url>
<url><loc>http://www.mywebsite.com/page/2</loc><changefreq>daily</changefreq><priority>0.6</priority></url>

Мой код:

$xml = new DOMDocument('1.0', 'UTF-8');

for($i = 0; $i < 2; $i++)
{
    $url = $xml->createElement('url');
    $xml->appendChild($url);

    $website_url = 'http://www.mywebsite.com/page/' . $i;

    $loc = $xml->createElement('loc', $website_url);
    $url->appendChild($loc);

    $change = $xml->createElement('changefreq', 'daily');
    $url->appendChild($change);

    $priority = $xml->createElement('priority', '0.6');
    $url->appendChild($priority);
}

header('Content-type: text/xml');
echo $xml->saveXML();

Почему выдается такой вид ошибки, когда XML кажется мне действительным

1 Ответ

5 голосов
/ 15 июня 2011

По крайней мере, в вашем примере у вас есть два корневых узла (<url>), так как это не разрешено в xml, вторым является junk after document element.

Вам не хватает корневого узла <urlset>, см .: http://www.sitemaps.org/protocol.php

...