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

时间:2015-01-07 19:15:06

标签: php simplexml sitemap

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

伪代码

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

当前的sitemap.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>

1 个答案:

答案 0 :(得分:2)

如果你正在添加它,你首先想要解析你已经拥有的东西:

$sitemap = simplexml_load_string(YOUR_ORIGINAL_XML_HERE_AS_A_STRING);

之后,我们假设您要创建一个新的url节点。您可以在任何addChild上使用SimpleXMLElement函数来执行此操作(这将创建子XML节点,或您在上面看到的嵌套节点结构):

$myNewUri = $sitemap->addChild("url");
$myNewUri->addChild("loc", "http://www.google.com/");
$myNewUri->addChild("lastmod", "2015-01-07T20:50:10+00:00");
$myNewUri->addChild("changefreq", "daily");
$myNewUri->addChild("priority", "2.0");

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

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

echo $sitemap->asXml();

如果您想将其保存到文件中:

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