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

PHP - Dynamically append web page to sitemap.xml

我有一个搜索网站数据库的网站。每当搜索 returns 一个结果时,我试图将 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>

如果要添加到现有内容,您首先要解析:

$sitemap = simplexml_load_string(YOUR_ORIGINAL_XML_HERE_AS_A_STRING);

之后,假设您要创建一个新的 url 节点。您可以通过在任何 SimpleXMLElement 上使用 addChild 函数来执行此操作(这会创建一个子 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");