0

我正在尝试从我的 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()”

有什么问题吗?

4

2 回答 2

13

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');
}
于 2012-08-27T16:18:03.563 回答
0

在这种情况下,xpath 不知道“id”是唯一属性,就像 xpath 将是非唯一的其他属性一样。尝试:

<?php $item[0]->addchild('description','textdescription'); ?>

选择数组中第一个返回的孩子。

于 2012-08-27T16:18:41.597 回答