我正在尝试从我的xml中选择一个具有特定属性“id”的元素。 这是我的xml:
<listitems>
<item id="1">
<name>item 1</name>
</item>
<item id="2">
<name>item 2</name>
</item>
<item id="3">
<name>item 3</name>
</item>
</listitems>
这是php文件:
<?php
$simplexml = simplexml_file_load('test.xml');
$item = $simplexml->xpath('item[@id="1"]');
?>
然后,如果我尝试,例如:
<?php $item->addchild('description','textdescription'); ?>
我在最后一行出现此错误: “致命错误:在非对象上调用成员函数addchild()”
有什么不对吗?
答案 0 :(得分:12)
SimpleXML的xpath()总是返回一个元素数组,即使你用id指定它也是如此。要向其中添加内容,您需要从该数组中提取特定元素。
试试这个:
$items = $simplexml->xpath('item[@id="1"]');
$item = $items[0];
$item->addchild('description','textdescription');
或者更好的是,确认您确实找到了具有该ID的内容:
$items = $simplexml->xpath('item[@id="1"]');
if (count($items) == 1)
{
$item = $items[0];
$item->addchild('description','textdescription');
}
答案 1 :(得分:0)
在这种情况下,xpath不知道“id”是唯一属性,因为xpath不是唯一的其他属性。尝试:
<?php $item[0]->addchild('description','textdescription'); ?>
选择数组中第一个返回的子项。