我一直收到以下错误:
致命错误:在第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>
答案 0 :(得分: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>
- 节点,如果您想计算<item>s
,请转...
$itemcount = $xmlobject->posts->item->count();
...并且记得做$itemcount--
,因为索引从0开始。
答案 1 :(得分:0)
错误被引用到此行
$xmlobject[0]->channel[0]->posts[0]->addChild("item");
正在“正在”向你说“正在发生什么。”
简单posts[0]
不是对象(就像您尝试执行1->addChild("item");
或'foo'->addChild("item");
或null->addChild("item");
之类的操作)
您确定->post[0]
会返回一个值(所以,SimpleXMLElement
对象)吗?