1

我不断收到以下错误:

致命错误:在第 3 行的 /www/zzl.org/t/h/e/theseminary/htdocs/submit.php 中的非对象上调用成员函数 addChild()

我的代码,在它自己的 php 文件中,如下所示:

<?php
$xmlobject = simplexml_load_file('data.xml');
$xmlobject[0]->channel[0]->posts[0]->addChild("item");
$itemcount = $xmlobject->channel->posts->count();
$xmlobject->channel[0]->posts[0]->item[$itemcount]->addChild("title", $title);
$xmlobject->channel->posts->item[$itemcount]->addChild("content", $content);
$xmlobject->asxml("data.xml");
header( "Location: $url" );
?>

我意识到这个问题已被多次问过,但我找不到解决问题的方法。

这是 XML 文件,如果有帮助的话。

<?xml version="1.0"?>
<channel>
<title></title>
<description></description>
<posts>
</posts>
</channel>
4

2 回答 2

3

改变这个...

$xmlobject[0]->channel[0]->posts[0]->addChild("item");

对这个……

$xmlobject->posts[0]->addChild("item");

原因:<channel>是你的根元素,$xmlobject代表根元素。

这就是为什么也必须发布 XML 的原因。
观看现场演示@http ://codepad.viper-7.com/DffgLG

顺便说一句,这条线...

$itemcount = $xmlobject->posts->count();

将计数<posts>-nodes,如果你想计数<item>s,去...

$itemcount = $xmlobject->posts->item->count();

...并记住这样做,$itemcount--因为索引从 0 开始。

于 2013-03-25T23:49:40.863 回答
0

错误是指这一行

$xmlobject[0]->channel[0]->posts[0]->addChild("item");

并且正在向你“说话”到底发生了什么。

根本posts[0]不是一个对象(就像你正在尝试做类似的事情1->addChild("item");or'foo'->addChild("item");null->addChild("item");

你确定->post[0]会返回一个值(所以,一个SimpleXMLElement对象)?

于 2013-03-25T13:13:40.570 回答