php中的array2xml转换

时间:2016-07-02 05:10:40

标签: php arrays xml

我需要将数组转换为XML,一切正常,但是当数值出现时很难转换

function array2XML($obj, $array)
{
    foreach ($array as $key => $value)
    {
        if(is_numeric($key))
            $key = 'item' . $key;

        if (is_array($value))
        {
            $node = $obj->addChild($key);
            array2XML($node, $value);
        }
        else
        {
            $obj->addChild($key, htmlspecialchars($value));
        }
    }


}

如果数值存在,我需要使用上一个键

这是我的json数据

 {"aaa":"111","bbb":222,"ccc":{"abc":[{"aaa":"123","bbb":253,"ccc":147},{"aaa":"123","bbb":253,"ccc":147}]},"bbc":{"bcc":[{"aaa":"1222","dfg":"123","vfbh":741},{"aaa":"1222","dfg":"123","vfbh":741}]}}

这是我创建的XML

     <aaa>111<aaa>
        <bbb>222</bbb>
         <ccc>
          <abc>
          <item0>
         <aaa></aaa>
         <bbb></bbb>
         <ccc></ccc>
</item0>
 <item1>
         <aaa></aaa>
         <bbb></bbb>
         <ccc></ccc>
</item1>

但是我需要在这种情况下将item0作为ex的prevoius键

这是我所期待的

<aaa>111<aaa>
            <bbb>222</bbb>
             <ccc>

              <abc>
             <aaa></aaa>
             <bbb></bbb>
             <ccc></ccc>
    </abc>
     <abc>
             <aaa></aaa>
             <bbb></bbb>
             <ccc></ccc>
    </abc>

1 个答案:

答案 0 :(得分:0)

<?php

$test_array = array (
  'bla' => 'blub',
  'foo' => 'bar',
  'another_array' => array (
    'stack' => 'overflow',
  ),
);
$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($test_array, array ($xml, 'addChild'));
print $xml->asXML();
results in

<?xml version="1.0"?>
<root>
  <blub>bla</blub>
  <bar>foo</bar>
  <overflow>stack</overflow>
</root>

数字值不应该有任何问题。