PHP-将网页动态附加到sitemap.xml

PHP-将网页动态附加到sitemap.xml,php,simplexml,sitemap,Php,Simplexml,Sitemap,我有一个网站,通过网站数据库进行搜索。每当搜索返回单个结果时,我都试图将url附加到sitemap.xml。我知道我需要使用simplexml,但我不确定如何实现它 伪代码 if (correct results) { $theDate = date('c',time()); $theUrl = "http://myurl.com/?r=asdfasdf1234" appendtositemap($theDate, $theUrl); } 当前站点地图.xml <

我有一个网站,通过网站数据库进行搜索。每当搜索返回单个结果时,我都试图将url附加到sitemap.xml。我知道我需要使用simplexml,但我不确定如何实现它

伪代码

if (correct results) {
    $theDate = date('c',time());
    $theUrl = "http://myurl.com/?r=asdfasdf1234"
    appendtositemap($theDate, $theUrl);
}
当前站点地图.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://example.com/</loc>
        <lastmod>2013-04-08T20:38:15+00:00</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>
</urlset>

http://example.com/
2013-04-08T20:38:15+00:00
每日的
1

如果要添加,首先要解析您已经拥有的内容:

$sitemap = simplexml_load_string(YOUR_ORIGINAL_XML_HERE_AS_A_STRING);
之后,假设您想要创建一个新的url节点。您可以通过在任何
simplexmlement
上使用
addChild
函数来执行此操作(这将创建一个子XML节点,或您在上面看到的嵌套节点结构):

在这里,第一个属性始终是必需的;这是要添加的XML节点的名称。第二个参数是可选的,但它指定要添加到新节点的文本值。对每个链接执行此操作,您将继续附加节点

最后,你想把它打印出来,不是吗?为此,请使用:

echo $sitemap->asXml();
如果要将其保存到文件中,请执行以下操作:

$sitemap->asXml("sitemap.xml");

即使我每天增加100个节点,这仍然有效吗;如果您每天都要添加新的字符串(即,前一天没有添加的字符串),那么这可能是最简单的解决方案(除非您想承担将所有内容作为字符串管理的复杂性)。因此,如果你说你的sitemap.xml每天增长100,那么这可能就是解决方案。如果它每天都保持不变,而你又在重新创造它,你应该重新评估你是如何做到的。此外,这取决于这一行动发生的频率和地点;对于每个用户检索,还是一次?将其保存为XML将比EchoOK更好,谢谢!最后一个问题是,如何使用simplexml检查站点地图中是否已经存在url?为此,我建议首先检查PHP SimpleXMLIterator类文档,特别是函数SimpleXMLIterator::getChildren。您基本上希望迭代每个子节点;并确定当前链接的任何节点是否等于所讨论的链接。
$sitemap->asXml("sitemap.xml");