使用PHP重新排列XML节点

时间:2013-03-26 21:31:13

标签: php xml

我有一个带有图像/信息的动态横幅,保存在XML文件中。我正在为用户添加选项以重新排列他们喜欢的图像(Jquery可排序),一旦我获得新订单(它计算了id属性),我想重新排列而不必复制每个节点的信息并再次保存在新的顺序中。例如:

<banners>
 <banner id="1001">
  <infos...>
 </banner>
 <banner id="1003">
  <infos...>
 </banner>
 <banner id="900">
  <infos...>
 </banner>
</banners> 

假设用户重新安排为900,1003,1001。我希望能够通过ID#获取节点并相应地重新定位它们。有没有简单的方法呢?

1 个答案:

答案 0 :(得分:0)

(1)向每个order节点添加一个子<banner>,并(2)对该子节点对xml进行排序。

for(1):$xml是simplexml-object,订单存储在$order ...

$order=array(900,1001,1003);

foreach ($xml->banner as $banner) {

    foreach ($order as $k => $v)
        if ($banner['id']==$v) $banner->addChild('order',$k);

}

for(2):按order排序xml:
请参阅此帖中接受的答案:sorting the table fields using simple XML and xpath

查看live-demo @ http://codepad.viper-7.com/MdcT7B