PHP高级XML添加到项目节点
我想在下面给定的XML中添加一个节点,我想在数据节点中添加一个项目,如下所示,随着项目id的增加,我想使用PHP来完成这项工作PHP高级XML添加到项目节点,php,xml-parsing,xml-serialization,Php,Xml Parsing,Xml Serialization,我想在下面给定的XML中添加一个节点,我想在数据节点中添加一个项目,如下所示,随着项目id的增加,我想使用PHP来完成这项工作 <?xml version="1.0" encoding="utf-8"?> <data> <item id="1" order="1"> <properties> <item propertyType="1"><![CDATA[images/gallery
<?xml version="1.0" encoding="utf-8"?>
<data>
<item id="1" order="1">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_01.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_01.jpg]]></item>
<item propertyType="3"><![CDATA[true]]></item>
<item propertyType="4"><![CDATA[openPopup;id=1]]></item>
</properties>
</item>
<item id="2" order="2">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_02.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_02.jpg]]></item>
<item propertyType="3"><![CDATA[false]]></item>
<item propertyType="4"><![CDATA[]]></item>
</properties>
</item>
<item id="3" order="3">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_03.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_03.jpg]]></item>
<item propertyType="3"><![CDATA[false]]></item>
<item propertyType="4"><![CDATA[]]></item>
</properties>
</item>
</data>
有人能帮我吗函数
simplexml\u插入\u后
取自此处:
ownerDocument->importNode(dom\u import\u simplexml($insert),true);
如果($target\u dom->nextSibling){
返回$target\u dom->parentNode->insertBefore($insert\u dom,$target\u dom->nextSibling);
}否则{
返回$target\u dom->parentNode->appendChild($insert\u dom);
}
}
foreach($xml->xpath('/data/item')作为$node){
$id=(int)$node['id'];
}
$next_id=$id+1;
simplexml\u在(新SimpleXMLElement('s)之后插入
“),$xml);
var_dump($xml->asXML());
<?php
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?>
<data>
<item id="1" order="1">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_01.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_01.jpg]]></item>
<item propertyType="3"><![CDATA[true]]></item>
<item propertyType="4"><![CDATA[openPopup;id=1]]></item>
</properties>
</item>
<item id="2" order="2">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_02.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_02.jpg]]></item>
<item propertyType="3"><![CDATA[false]]></item>
<item propertyType="4"><![CDATA[]]></item>
</properties>
</item>
<item id="3" order="3">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_03.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_03.jpg]]></item>
<item propertyType="3"><![CDATA[false]]></item>
<item propertyType="4"><![CDATA[]]></item>
</properties>
</item>
</data>');
function simplexml_insert_after(SimpleXMLElement $insert, SimpleXMLElement $target)
{
$target_dom = dom_import_simplexml($target);
$insert_dom = $target_dom->ownerDocument->importNode(dom_import_simplexml($insert), true);
if ($target_dom->nextSibling) {
return $target_dom->parentNode->insertBefore($insert_dom, $target_dom->nextSibling);
} else {
return $target_dom->parentNode->appendChild($insert_dom);
}
}
foreach($xml->xpath('/data/item') as $node) {
$id = (int)$node['id'];
}
$next_id = $id + 1;
simplexml_insert_after(new SimpleXMLElement('<item id="'.$next_id.'" order="'.$next_id.'">
<properties>
<item propertyType="1"><![CDATA[images/gallery/images/bg_ph_03.jpg]]></item>
<item propertyType="2"><![CDATA[images/gallery/thumbs/small_pic_03.jpg]]></item>
<item propertyType="3"><![CDATA[false]]></item>
<item propertyType="4"><![CDATA[]]></item>
</properties>
</item>'), $xml);
var_dump($xml->asXML());