2011-02-08 13 views
1

這裏就是我想要做的如何使用PHP5將子項添加到XML文件中的最後一個節點?

我目前有:

<sessions> 
    <session> 
    <event>milk</event> 
    </session> 
    <session> 
    <event>graze</event> 
    </session> 
</sessions> 

我想去到最後的「會話」節點,然後添加一個新的事件

<event>health treatment</event> 

所以它看起來像:

<sessions> 
    <session> 
    <event>milk</event> 
    </session> 
    <session> 
    <event>graze</event> 
    <event>health treatment</event> 
    </session> 
</sessions> 

我試過simpleXML的xpath和註冊路徑名,我發現在這個網站上的一些例子,但沒有成功 我寧願使用simpleXML,但如果dom的唯一的解決方案,然後我會用它,我沒有設法做到這一點在任何

這裏是我的腳本(我評論一些比特時,我是經歷過了):

<?php 
$session = $_POST['session']; 
$event = $_POST['event']; 

$xml = simplexml_load_file("sessions.xml"); 
//$xml->registerXPathNamespace('o', 'http://obix.org/ns/schema/1.0'); 

$sxe = new SimpleXMLElement($xml->asXML()); 

if(isset($session)){ 
$item = $sxe->addChild("session"); 
}else{ 
list($item) = $xml->xpath('/sessions/session[last()]'); 
$item->name = 'Jane Smith'; 
//$item = $sxe->children('session[last()]'); 
//$xpath = '/o:sessions/o:session[last()]'; 
//$item = $xml->xpath($xpath); 
} 
$item->addChild("event", $event); 
$sxe->asXML("sessions.xml"); 
?> 

,或者如果你知道一個更好的方式來做到這一點,那麼請讓我知道。

回答

1

可以使用SimpleXMLElement::count()

例如

$lastSession = $xml->session[$xml->session->count() - 1]; 
$lastSession->addChild('event', $event) 
+0

的作品就像一個魅力輕鬆跳轉到一個元素的最後一個孩子!感謝堆brotha – ZiGi

相關問題