查找具有属性的元素 - SimpleXML xpath

Mar*_*hia 0 php xml xpath simplexml

我正在尝试从我的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>
Run Code Online (Sandbox Code Playgroud)

这个php文件:

<?php
$simplexml = simplexml_file_load('test.xml');
$item = $simplexml->xpath('item[@id="1"]');
?>
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试,例如:

<?php $item->addchild('description','textdescription'); ?>
Run Code Online (Sandbox Code Playgroud)

我在最后一行得到这个错误:"致命错误:在非对象上调用成员函数addchild()"

有什么不对的吗?

Tho*_*ley 12

SimpleXML的xpath()总是返回一个元素数组,即使你用id指定它也是如此.要向其中添加内容,您需要从该数组中提取特定元素.

试试这个:

$items = $simplexml->xpath('item[@id="1"]');
$item = $items[0];
$item->addchild('description','textdescription');
Run Code Online (Sandbox Code Playgroud)

或者更好的是,验证您确实找到了具有该ID的内容:

$items = $simplexml->xpath('item[@id="1"]');
if (count($items) == 1)
{
    $item = $items[0];
    $item->addchild('description','textdescription');
}
Run Code Online (Sandbox Code Playgroud)