如何获取xml中的最后一个节点值

时间:2014-10-19 14:55:12

标签: php xml simplexml

我想获取item元素中最后一个id的值。例如,在下面的xml中,我想得到值2并为输入的下一个项的id增加一个。因此,如果输入下一个项目,则ID将自动为3,依此类推。尝试了几种方式,但我仍然无法让它工作。有什么建议? items.xml

<?xml version="1.0"?>
<items>
<item>
    <id>1</id>
    <name>N95</name>
    <desc>Nokia</desc>
    <price>299</price>
    <quantity>11</quantity>
</item>
<item>
    <id>2</id>
    <name>S4</name>
    <desc>Samsung</desc>
    <price>500</price>
    <quantity>50</quantity>
</item>
</items>

php文件

$x = file_get_contents('../../data/items.xml');
$root = $x->documentElement; //root element(items)
$lastId = $root->lastChild->firstChild->firstChild->nodeValue; //navigate to get the value of last item id
$newItemId = $lastId + 1;

1 个答案:

答案 0 :(得分:1)

您可以使用带有xpath的SimpleXML来定位最后一个元素。例如:

$xml = simplexml_load_file('../../data/items.xml');
$last_item = $xml->xpath('//item[last()]');
$last_id = (int) $last_item[0]->id;
$newItemId = $last_id + 1;
echo $newItemId; // 3

或者简单如下:

$count = count($xml);
$last_item = $xml->item[$count-1];
$last_id = (int) $last_item->id;
$newItemId = $last_id + 1;