将数组转换为 XML 或 JSON

Posted

技术标签:

【中文标题】将数组转换为 XML 或 JSON【英文标题】:Convert an array to XML or JSON 【发布时间】:2012-02-27 11:01:45 【问题描述】:

我要转换下面的数组

Array
(
    [city] => Array
        (
            [0] => Array
                (
                    [0] => Rd
                    [1] => E
                )

            [1] => B
            [2] => P
            [3] => R
            [4] => S
            [5] => G
            [6] => C
        )

    [dis] => 1.4
)

转换成 XML 格式或 JSON。有人可以帮忙吗?

【问题讨论】:

How to convert array to SimpleXML的可能重复 以***.com/questions/1397036/…为例 【参考方案1】:

JSON,使用json_encode函数:

<?php echo json_encode( $array); ?>

XML,见this question。

【讨论】:

json_encode 将数组转换为 json 格式,但子数组的键尚未删除.. 请您提出一个函数来显示 json 中的所有元素【参考方案2】:

您使用哪种编程语言?

如果您使用的是 PHP,您可以使用以下内容转换为 JSON:

$json = json_encode($your_array);

对于 XML,您可以查看以下答案:How to convert array to SimpleXML。

希望对您有所帮助。

【讨论】:

对不起,但它没有帮助.. 示例不支持数字索引,请您给我更多关于这些数组的反馈【参考方案3】:

这适用于关联数组。

    function array2xml($array, $node_name="root") 
    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->formatOutput = true;
    $root = $dom->createElement($node_name);
    $dom->appendChild($root);

    $array2xml = function ($node, $array) use ($dom, &$array2xml) 
        foreach($array as $key => $value)
            if ( is_array($value) ) 
                $n = $dom->createElement($key);
                $node->appendChild($n);
                $array2xml($n, $value);
            else
                $attr = $dom->createAttribute($key);
                $attr->value = $value;
                $node->appendChild($attr);
            
        
    ;

    $array2xml($root, $array);

    return $dom->saveXML();

【讨论】:

【参考方案4】:

注意: XML 元素名称的数字不是一个好主意,因此 $your_array 不应该有数字作为键。

试试这个:

$你的数组=数组( '城市' => 数组 ( '0' => 数组('0' => 'Rd', '1' => 'E'), '1' => 'B', '2' => 'P', '3' => 'R', '4' => 'S', '5' => 'G', '6' => 'C' ), 'dis' => '1.4' );

下面的函数调用自身(递归),因此它应该适用于任何深度的数组。

函数使用三元运算符:

(条件)? if true action : if false action

... 检查调用的值是否为数组。

如果是数组,则调用自身(递归)深入挖掘,如果value不是数组,则将其附加到XML对象中,使用数组键作为元素名称,使用数组值作为元素值。

函数array_to_xml(数组$your_array,SimpleXMLElement $xml) foreach ($arr as $k => $v) is_array($v) ? array_to_xml($v, $xml->addChild($k)) : $xml->addChild($k, $v); 返回 $xml; $your_xml = $this->array_to_xml($your_array, new SimpleXMLElement(''))->asXML();

现在,您的数组是一个 XML 并包含在 $your_xml 变量中,因此您可以随心所欲地使用它。

$your_xml 输出(例如,如果您“回显”它)将如下所示:

路0> E1> 0> 乙1> P2> R3> S4> G5> C6> 城市> 1.4

【讨论】:

以上是关于将数组转换为 XML 或 JSON的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 数组转换为 XML

XML 到 JSON 或数组? PHP

PHP将带有一些(重复)元素的XML转换为Json到Json数组[重复]

如何使用 XSLT 将单个子 xml 元素转换为 Json 数组

xml转换为json格式时,如何将指定节点转换成数组 Json.NET

将 Json 转换为 XML - 带有数组值的 Json