将字符串添加到PHP中<urlset>标记内的sitemap.xml文件中

时间:2018-01-12 04:49:58

标签: php

我尝试将一个字符串添加到<urlset>标记内的sitemap.xml文件中,但它的存储方式不同。

<?php
$date_mod = date('Y-m-d');
$sitemap = "<url>
  <loc>http://www.website.com/article.php?page=3</loc>
  <lastmod>$date_mod</lastmod>
  <priority>0</priority>
</url>";


 $xml = simplexml_load_file("sitemap.xml");
$xml->addChild($sitemap);

file_put_contents("sitemap.xml", $xml->asXML());

 ?>

输出如下:

<?xml version="1.0"?>
<urlset>
<url>
  <loc>http://www.website.com/article.php?page=3</loc>
  <lastmod>2018-01-12</lastmod>
  <priority>0</priority>
</url>
<//www.website.com/article.php?page=3</loc>
  <lastmod>2018-01-12</lastmod>
  <priority>0</priority>
</url>/></urlset>

请帮帮我。

1 个答案:

答案 0 :(得分:1)

如果原始xml是这样的:

<?xml version="1.0"?>
<urlset>
</urlset>

你更新的xml是这样的:

<?xml version="1.0"?>
<urlset>
    <url>
    <loc>http://www.website.com/article.php?page=3</loc>
    <lastmod>2018-01-12</lastmod>
    <priority>0</priority>
    </url>
</urlset>

然后你可以参考以下代码:

<?php
$date_mod = date('Y-m-d');
$sitemap = "<url>
<loc>http://www.website.com/article.php?page=3</loc>
<lastmod>$date_mod</lastmod>
<priority>0</priority>
</url>";

$sitemap_node =simplexml_load_string($sitemap);
$xml = simplexml_load_file("sitemap.xml");
sxml_append($xml,$sitemap_node);
$xml->asXML('sitemap.xml');

function sxml_append(SimpleXMLElement $to, SimpleXMLElement $from) {
    $toDom = dom_import_simplexml($to);
    $fromDom = dom_import_simplexml($from);
    $toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
}

?>

您之前的代码未能做到这一点是因为addChild方法只能处理文本(而stil有一些缺点),而不是另一个xml对象。