Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何颠倒simplexmlelement列表的顺序?_Php_Xml - Fatal编程技术网

Php 如何颠倒simplexmlelement列表的顺序?

Php 如何颠倒simplexmlelement列表的顺序?,php,xml,Php,Xml,我有一个像这样的simplexml对象 <aaaa> <bbbb>0000</bbbb> <cccc>0000</cccc> <dddd> <eeee> <gggg>1111</gggg> <hhhh>2222</hhhh> <mmmm>3333</

我有一个像这样的simplexml对象

<aaaa>
    <bbbb>0000</bbbb>
    <cccc>0000</cccc>
    <dddd>
        <eeee>
          <gggg>1111</gggg>
          <hhhh>2222</hhhh>
          <mmmm>3333</mmmm>
        </eeee>
        <eeee>
          <gggg>4444</gggg>
          <hhhh>5555</hhhh>
          <mmmm>6666</mmmm>
        </eeee>
        <eeee>
          <gggg>7777</gggg>
          <hhhh>8888</hhhh>
          <mmmm>9999</mmmm>
        </eeee>
    </dddd>
</aaaa>

0000
0000
1111
2222
3333
4444
5555
6666
7777
8888
9999
如何获得如下所示的新结构?(新元素ffff包含dddd子元素的相同列表,顺序相反)


0000
0000
1111
2222
3333
4444
5555
6666
7777
8888
9999
7777
8888
9999
4444
5555
6666
1111
2222
3333

我已经尝试迭代dddd的子元素,并将它们插入到一个对象数组中,以使用array_reverse进行反转。。。但是当我尝试将对象插入到主结构中时,结果是不完整的。

您可以循环这些子元素,并以正确的顺序将它们插入到新的
元素中

通过将现有的
SimpleXMLElement
用法与提供的额外功能混合使用,最容易做到这一点。不需要中间数组或对它们进行排序

$aaaa = simplexml_load_string($xml_string);

// Add new <ffff> element
$ffff = $aaaa->addChild('ffff');

// Get DOMElement instance for <ffff>
$ffff_dom = dom_import_simplexml($ffff);

// Loop over <dddd> children and prepend to <ffff>
foreach ($aaaa->dddd->children() as $child) {
    $child_copy = dom_import_simplexml($child)->cloneNode(TRUE);
    $ffff_dom->insertBefore($child_copy, $ffff_dom->firstChild);
}

// Go back to SimpleXML-land and see the result
echo $aaaa->saveXML();
$aaaa=simplexml\u load\u字符串($xml\u字符串);
//添加新元素
$ffff=$aaaa->addChild('ffff');
//获取的DomeElement实例
$ffff\u dom=dom\u import\u simplexml($ffff);
//在子对象上循环并预先结束到
foreach($aaaa->dddd->children()作为$child){
$child\u copy=dom\u import\u simplexml($child)->cloneNode(TRUE);
$ffff\u dom->insertBefore($child\u copy,$ffff\u dom->firstChild);
}
//返回SimpleXML land并查看结果
echo$aaaa->saveXML();

()

“但是当我尝试将对象插入到主结构中时,结果是不完整的”-你看过XSLT了吗?太好了!我一直在尝试使用混合解决方案,但我对dom扩展非常不好。。。非常感谢你。
$aaaa = simplexml_load_string($xml_string);

// Add new <ffff> element
$ffff = $aaaa->addChild('ffff');

// Get DOMElement instance for <ffff>
$ffff_dom = dom_import_simplexml($ffff);

// Loop over <dddd> children and prepend to <ffff>
foreach ($aaaa->dddd->children() as $child) {
    $child_copy = dom_import_simplexml($child)->cloneNode(TRUE);
    $ffff_dom->insertBefore($child_copy, $ffff_dom->firstChild);
}

// Go back to SimpleXML-land and see the result
echo $aaaa->saveXML();