Проблема обновления XML-файла с помощью PHP DOMDocument (); - PullRequest
0 голосов
/ 06 августа 2011

Я пытаюсь написать функцию, которая обновляет карту сайта или технически добавляет запись в файл sitemap.xml.Стандартную структуру карты сайта Google можно увидеть здесь: http://www.sitemappro.com/google-sitemap.html

Ниже приведен код этой функции:

function AddEntry($loc,$lastmod,$changefreq,$priority){

$xmlDoc = new DOMDocument();
$xmlDoc->load("sitemap.xml");   


$url []=array('loc' => $loc, 'lastmod' => $lastmod, 'changefreq'=> $changefreq, 'priority' =>$priority );

$r=$xmlDoc->createElement("url");

$xmlDoc->appendChild($r);

foreach($url as $key=>$value)
{
    $r->appendChild($xmlDoc->createElement($key))->appendChild($xmlDoc->createTextNode($value));

}

$xmlDoc->save();
}

Приведенный выше код не работает и дает этоошибка:

«Неустранимая ошибка: необработанное исключение« DOMException »с сообщением« Ошибка недопустимого символа »в ...»

Не могли бы вы помочь, исправив мой код?Заранее спасибо.

1 Ответ

0 голосов
/ 06 августа 2011

Как указано в комментарии, проблема должна быть в этой строке

    $r->appendChild($xmlDoc->createElement($key))->appendChild($xmlDoc->createTextNode($value));

Скорее всего, вы добавляете некоторые символы url в ваш XML.Проблема в том, что вы должны убежать с ними или окружить свой $value секцией CDATA .В противном случае сгенерированный XML будет недействительным, и библиотека xml выдаст такие исключения.

PS Я не помню, хороша ли функция htmlentities и для xml, я полагаю, чтоно вам нужно выяснить это.

...