簡體   English   中英

如何使用PHP5在XML文件的最后一個節點中添加子節點?

[英]How to add a child to the last node in an XML file using PHP5?

這就是我想要做的

我目前有:

<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是唯一的解決方案,那么我將使用它,我也沒有設法在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"); 
?>

或者,如果您知道更好的方法,請告訴我。

您可以使用SimpleXMLElement :: count()輕松跳轉到元素的最后一個子元素

例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM