将数组转换为 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> 城市>【讨论】:
以上是关于将数组转换为 XML 或 JSON的主要内容,如果未能解决你的问题,请参考以下文章
PHP将带有一些(重复)元素的XML转换为Json到Json数组[重复]
如何使用 XSLT 将单个子 xml 元素转换为 Json 数组