使用PHP DOMDocument()更新XML文件时出现问题;

时间:2011-08-05 22:16:07

标签: php xml domdocument

我正在尝试编写一个更新网站站点地图的功能,或者在技术上添加一个到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 :(得分:0)

正如评论中指出的那样,问题应该在这一行

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

您最有可能在XML中添加一些网址字符。问题是您必须escape$valueCDATA部分包围起来{{1}}。否则生成的XML将无效,xml库将抛出这种异常。

P.S。我不记得htmlentities函数是否也适用于xml,我想,但是你需要对此进行调查。