0

如何从 xml 节点中准确删除不需要的父节点并保持数据完整?像数组移位之类的东西。例如,我有一个数组

            [LineItems] => Array
                (
                    [0] => Array
                        (
                            [LineItem] => Array
                                (
                                    [Description] => iPhone
                                    [Quantity] => 1
                                    [UnitAmount] => 101.0000
                                    [AccountCode] => 200
                                    [TaxAmount] => 0.0000
                                    [LineAmount] => 101.0000
                                )

                        )

                    [1] => Array
                        (
                            [LineItem] => Array
                                (
                                    [Description] => Flat Shipping Rate
                                    [Quantity] => 1
                                    [AccountCode] => 200
                                    [UnitAmount] => 5.0000
                                    [LineAmount] => 5.0000
                                )

                        )

                )

如何准确删除 LineItems[0] 和 LineItems[1] 并将 LineItem 数组推到左侧?我正在寻找这样的东西:

  [LineItems] => Array
                (
                    [LineItem] => Array
                                (
                                    [Description] => iPhone
                                    [Quantity] => 1
                                    [UnitAmount] => 101.0000
                                    [AccountCode] => 200
                                    [TaxAmount] => 0.0000
                                    [LineAmount] => 101.0000
                                )

                        )

                   [LineItem] => Array
                                (
                                    [Description] => Flat Shipping Rate
                                    [Quantity] => 1
                                    [AccountCode] => 200
                                    [UnitAmount] => 5.0000
                                    [LineAmount] => 5.0000
                                )

                        )

此外,当转换数组时:

Array
(
    [Invoices] => Array
        (
......something....
)
)

转换成xml时,xml会输出

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <Invoices>
  </Invoices>
</root>

我如何实际删除根?

提前致谢。

4

2 回答 2

1
foreach ($my_array['Invoices']['LineItems'] as & $lineItem) 
   $lineItem = $lineItem['LineItem'];

关于 XML 问题,你可以试试这个功能(基于PHP.net 上的评论):

function array2xml($array, $root_element_name = 'root') 
{ 
    if (count($array) == 1) {
        $root_element_name = reset(array_keys($array));
        $array = reset($array);
    }
    $xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}/>"); 

    function xml_builder($node, $array) { 
            foreach($array as $key => $value) { 
                if (is_array($value)) { 
                    if (is_integer($key) && count($value) == 1) {
                        $key = reset(array_keys($value));
                        $value = reset($value);
                    }
                    $child = $node->addChild($key); 
                    xml_builder(& $child, $value); 
                } else { 
                    $node->addChild($key, $value); 
                } 
            }
    }; 
    xml_builder(& $xml, $array); 

    return $xml->asXML(); 
} 

print htmlentities(array2xml($my_array));
于 2013-11-02T15:20:21.930 回答
1
$tmparr=[];
array_push($tmparr,$arr[LineItems][0][LineItem],$arr[LineItems][1][LineItem]);
unset($arr[LineItems][0],$arr[LineItems][1]);
foreach($tmparr as $key=>$val){
$arr[LineItems][]=$val;
};
unset($tmparr);

我猜...

于 2013-11-02T15:05:46.210 回答