在非对象PHP上调用成员函数addChild()

时间:2013-09-07 23:05:52

标签: xml simplexml php

我收到此错误:

  

在非对象

上调用成员函数addChild()

但XML文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
  <loc>http://mysite.com/</loc>
  <changefreq>weekly</changefreq>
  <priority>1.00</priority>
</url>
</urlset>

我正在这样做:

//APPEND TO SITEMAP
$file = '../sitemap.xml';
$xml = simplexml_load_file($file);

$urlset = $xml->urlset;

$urls = $urlset->addChild('url');
$urls->addAttribute("mongoID", $theAuthorUniqueMongoID);
$urls->addChild('loc', 'http://mysite.com/author/'.$authorLink.'/');
$urls->addChild('changefreq', 'monthly');
$urls->addChild('priority', '0.80');

$xml->asXML($file);

我基本上只是将一些东西添加到我的站点地图中。我从来没有擅长XML,但我不确定我在这方面做错了什么。

1 个答案:

答案 0 :(得分:4)

你应该改变这个:

$urlset = $xml->urlset;
$urls = $urlset->addChild('url');

分为:

$urls = $xml->addChild("url");

它会将内容添加到您加载的XML的根节点。因此,运行脚本一次产生以下输出:

<?xml version="1.0" encoding="UTF-8"?>
<urlset>
  <url>
    <loc>http://mysite.com/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.00</priority>
  </url>
  <url mongoID="">
    <loc>http://mysite.com/author//</loc>
    <changefreq>monthly</changefreq>
    <priority>0.80</priority>
  </url>
</urlset>

我更改了输出的格式,因此更容易阅读。添加实际上只是一行。