[英]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.