首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用php实现xml文件中两个节点位置的互换

如何用php实现xml文件中两个节点位置的互换
EN

Stack Overflow用户
提问于 2013-11-25 20:21:44
回答 1查看 496关注 0票数 0

有两个场景节点,我想交换一下它们的位置

我的对象根据这个场景位置进行渲染,并且我想要更改渲染顺序

提前谢谢。

代码语言:javascript
运行
复制
    <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>
EN

回答 1

Stack Overflow用户

发布于 2013-11-26 01:42:08

将XML加载到DOMDocument中,使用Xpath或DOM函数找到节点并移动它们:

代码语言:javascript
运行
复制
$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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20192956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档