将 SimpleXMLElement 对象添加到数组

Add SimpleXMLElement Object to Array

我有如下所示的对象数组。我在添加到这个对象数组时遇到了问题,因为我不断收到错误消息。 这是目前的情况:

SimpleXMLElement Object
(
  [url] => Array
     (
        [0] => SimpleXMLElement Object
            (
                [loc] => http://jbsoftware.co.uk/
                [lastmod] => 2015-02-02
                [changefreq] => monthly
                [priority] => 1.0
            )
      )
)

现在要添加到最后我正在做以下事情:

$note="
    <url>
       <loc>{$actual_link}</loc>
       <lastmod>{$date}</lastmod>
       <changefreq>monthly</changefreq>
       <priority>1.0</priority>
    </url>
    ";
    $sxe = new SimpleXMLElement($note);
    $page[] = $sxe;

这反过来又给我提供了这个错误....

Fatal error:  controller::generateSitemap() [<a href='controller.generatesitemap'>controller.generatesitemap</a>]: Cannot create unnamed attribute

谁能告诉我为什么我不能简单地将其添加到当前对象数组的末尾? 这个真的把我难住了。

$page 不是一个数组(或者一个没有任何意义的数组对象),它是一个对象(class 的一个实例)。所以你不能对它使用数组方法。您只能使用 available simpleXMLElement class methods.

为了满足您的特殊需要,simpleXMLElement 不提供任何方法来将其他 simpleXMLElement 实例作为子实例追加。但是,您可以使用 addChild 方法逐个元素构建子树:

$url = $page->addChild('url');
$loc = $url->addChild('loc', "{$actual_link}");
$lastmod = $url->addChild('lastmod', "{$date}");
...

$url$loc$lastmod 是新的 simpleXMLElement 实例。