如何使用php交换xml文件中两个节点的位置
有两个场景节点,我想交换它们的位置 我的对象根据此场景位置进行渲染,我想更改渲染顺序 提前谢谢如何使用php交换xml文件中两个节点的位置,php,xml,Php,Xml,有两个场景节点,我想交换它们的位置 我的对象根据此场景位置进行渲染,我想更改渲染顺序 提前谢谢 <view hlookat="0" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="range" vlookatmin="-56.738" vlookatmax="56.738"/> <preview url="panos/3017
<view hlookat="0" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="range" vlookatmin="-56.738" vlookatmax="56.738"/>
<preview url="panos/301760039505_20120929_7D_0891Panorama-e.tiles/preview.jpg"/>
<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="808" tiledimageheight="808">
<cube url="panos/301760039505_20120929_7D_0891Panorama-e.tiles/%s/l1/%v/l1_%s_%v_%h.jpg"/>
</level>
<mobile>
<cube url="panos/301760039505_20120929_7D_0891Panorama-e.tiles/mobile_%s.jpg"/>
</mobile>
</image>
<!-- place your scene hotspots here -->
</scene>
<scene name="scene_301760039601_20120929_7D_0946Panorama-e" title="Exterior" onstart="" thumburl="panos/301760039601_20120929_7D_0946Panorama-e.tiles/thumb.jpg" lat="" lng="" heading="">
<view hlookat="0" vlookat="0" fovtype="MFOV" fov="120" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="range" vlookatmin="-56.738" vlookatmax="56.738"/>
<preview url="panos/301760039601_20120929_7D_0946Panorama-e.tiles/preview.jpg"/>
<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="808" tiledimageheight="808">
<cube url="panos/301760039601_20120929_7D_0946Panorama-e.tiles/%s/l1/%v/l1_%s_%v_%h.jpg"/>
</level>
<mobile>
<cube url="panos/301760039601_20120929_7D_0946Panorama-e.tiles/mobile_%s.jpg"/>
</mobile>
</image>
<!-- place your scene hotspots here -->
</scene>
将XML加载到DOMDocument中,使用Xpath或DOM函数查找节点并移动它们:
$xml = <<<'XML'
<scenes>
<scene name="one"/>
<scene name="other"/>
<scene name="two"/>
</scenes>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXPath($dom);
// find the nodes
$nodeOne = $xpath->evaluate('//scene[@name="one"]')->item(0);
$nodeTwo = $xpath->evaluate('//scene[@name="two"]')->item(0);
if (!$nodeOne->isSameNode($nodeTwo)) {
// remember parent and position of the second node
$parent = $nodeTwo->parentNode;
$target = $nodeTwo->nextSibling;
// move the second node
$nodeOne->parentNode->insertBefore($nodeTwo, $nodeOne->nextSibling);
// move the first node
$parent->insertBefore($nodeOne, $target);
}
header('Content-type: text/xml');
echo $dom->saveXml();
$xml=项(0);
$nodewo=$xpath->evaluate('//scene[@name=“two”]')->项(0);
if(!$nodeOne->isSameNode($nodewo)){
//记住第二个节点的父节点和位置
$parent=$nodewo->parentNode;
$target=$nodeTwo->nextSibling;
//移动第二个节点
$nodeOne->parentNode->insertBefore($nodewo,$nodeOne->nextSibling);
//移动第一个节点
$parent->insertBefore($nodeOne,$target);
}
标题('Content-type:text/xml');
echo$dom->saveXml();
为每个元素添加一个节点
,并更改这些值。然后阅读XML
,按
排序。