为了账号安全,请及时绑定邮箱和手机立即绑定

如何在php中将XML转换为数组?

如何在php中将XML转换为数组?

PHP
catspeake 2019-06-26 13:26:02
如何在php中将XML转换为数组?我想将下面的XML转换为PHP数组。对我怎么做有什么建议吗?<aaaa Version="1.0">    <bbb>      <cccc>        <dddd Id="id:pass" />        <eeee name="hearaman" age="24" />      </cccc>    </bbb></aaaa>
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

放轻松!

$xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA);$json = json_encode($xml);$array = json_decode($json,TRUE);


查看完整回答
反对 回复 2019-06-26
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

转换XML字符串($buffer)到一个简化的数组中,忽略属性并对具有相同名称的子元素进行分组:

function XML2Array(SimpleXMLElement $parent){
    $array = array();

    foreach ($parent as $name => $element) {
        ($node = & $array[$name])
            && (1 === count($node) ? $node = array($node) : 1)
            && $node = & $node[];

        $node = $element->count() ? XML2Array($element) : trim($element);
    }

    return $array;}$xml   = simplexml_load_string($buffer);$array = XML2Array($xml);$array = array($xml->getName() => $array);

结果:

Array(
    [aaaa] => Array
        (
            [bbb] => Array
                (
                    [cccc] => Array
                        (
                            [dddd] => 
                            [eeee] => 
                        )

                )

        ))

如果您还想拥有这些属性,则可以通过SimpleXMLElement的JSON编码/解码获得这些属性。这通常是最简单的快速“n”脏解决方案:

$xml   = simplexml_load_string($buffer);$array = json_decode(json_encode((array) $xml), true);$array = array($xml->getName() => $array);

结果:

Array(
    [aaaa] => Array
        (
            [@attributes] => Array
                (
                    [Version] => 1.0
                )

            [bbb] => Array
                (
                    [cccc] => Array
                        (
                            [dddd] => Array
                                (
                                    [@attributes] => Array
                                        (
                                            [Id] => id:pass
                                        )

                                )

                            [eeee] => Array
                                (
                                    [@attributes] => Array
                                        (
                                            [name] => hearaman                                            [age] => 24
                                        )

                                )

                        )

                )

        ))

请注意,所有这些方法只在XML文档的命名空间中工作。


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 679 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信