我正在尝试编写一个更新网站站点地图的功能,或者在技术上添加一个到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',并在...中显示消息'无效字符错误'”
您可以通过更正我的代码来帮忙吗?提前谢谢。
答案 0 :(得分:0)
正如评论中指出的那样,问题应该在这一行
$r->appendChild($xmlDoc->createElement($key))->appendChild($xmlDoc->createTextNode($value));
您最有可能在XML中添加一些网址字符。问题是您必须escape将$value
或CDATA部分包围起来{{1}}。否则生成的XML将无效,xml库将抛出这种异常。
P.S。我不记得htmlentities函数是否也适用于xml,我想,但是你需要对此进行调查。