2014-10-19 165 views
1

我想获取item元素中最后一个id的值。例如,在下面的xml中,我想获得值2并为输入的下一个项目添加一个id。所以如果输入下一个项目,id将自动为3,依此类推。尝试了几种方法,但我仍然无法实现它的工作。有什么建议么? items.xml如何获取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

你可以使用SimpleXML使用XPath目标的最后一个元素。例如:

$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; 
+0

感谢您的所有帮助鬼,真的很感激。我目前还没有学习xpath。从以前的所有示例中,我认为我们可以通过xml文件轻松导航,与childNode相比,我是对吗? @Ghost – bisonsausage 2014-10-19 15:42:06

+0

@bisonsausage是的,你可以针对你想要的更具体的元素,我相信迟早你会得到如果,它有点像使用jQuery与选择器等。我很高兴这有助于 – Ghost 2014-10-19 15:52:09