douyu7210 2013-10-28 23:17
浏览 34
已采纳

Array不会转换为XML

I have this array ($data):

Array (
    [status_code] => X
    [key_1] => 12345
    [key_2] => 67890
    [short_message] => test
    [long_message] => test_long_message
)

But I am struggling to convert this to an XML element.

Here is my code:

$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($data, array ($xml, 'addChild'));
print $xml->asXML();

Here is the results I am wanting:

<root>
    <status_code>X</status_code>
    <key_1>12345</key_1>
    <key_2>67890</key_2>
    <short_message>test</short_message>
    <long_message>test_long_message</long_message>
</root>

Instead I get:

<X>1234567890testtest_message_long

Could somebody please point out what I am doing wrong?

Thanks,

Peter

  • 写回答

2条回答 默认 最新

  • dongxiangchan0743 2013-10-28 23:25
    关注

    SimpleXMLElement.addChild() takes its parameters in the order $elementName, $elementValue.

    array_walk_recursive() passes the elements in the order $value, $key (in your example that would be $elementValue, $elementName).

    This should work:

    $data = array(
        'status_code' => 'X',
        'key_1' => 12345
    );
    $xml = new SimpleXMLElement('<root/>');
    array_walk_recursive(
        $data,
        function ($value, $key) use ($xml) {
            $xml->addChild($key, $value);
        }
    );
    echo $xml->asXML();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改