php 利用json_encode实现xml转数组.txt

1. 背景介绍

现在的web开发越来越多地使用基于RESTful API的微服务,其推崇的数据格式为JSON。而在一些老的系统中,仍使用XML作为其主要数据格式。这个时候,将XML数据转换为JSON数据是一个必须面对的问题。

2. XML转为数组

2.1 xml_decode函数

php有一个xml_decode函数可以将XML数据转为PHP数组。但该函数在应对较大的XML数据时,会容易导致内存溢出。所以为了更好的支持大XML数据的转换,我们可以使用基于SimpleXML扩展的xml2array函数。

function xml2array($xml) {

$arr = array();

foreach ($xml->children() as $element) {

$tag = $element->getName();

$value = (string) $element;

if ($element->count()) {

$arr[$tag][] = xml2array($element);

}

else {

$arr[$tag][] = $value;

}

}

return $arr;

}

xml2array函数会递归地将XML结构转换为数组,并返回该数组。

2.2 使用xml2array函数转换XML数据

$xml = simplexml_load_string($myXMLData);

$array = xml2array($xml);

这样,我们就完成了将XML数据转换为PHP数组。

3. 数组转为JSON

3.1 使用json_encode函数

php中的json_encode函数可以将PHP数组数据转换为JSON数据。

$json = json_encode($array);

这里需要注意,在转换过程中,会用到Unicode字符集,所以最终返回的字符串中,含有一些乱码,需要在前端中进行Unicode转码。

3.2 转换后的JSON数据示例

{

"root": {

"books": [

{

"book": {

"name": [

"The Old Man and the Sea"

],

"author": [

"Ernest Hemingway"

],

"publisher": [

"Charles Scribner's Sons"

],

"price": [

"12.99"

]

}

},

{

"book": {

"name": [

"One Hundred Years of Solitude"

],

"author": [

"Gabriel Garcia Marquez"

],

"publisher": [

"Harper Perennial"

],

"price": [

"14.87"

]

}

}

]

}

}

4. 结论

本文通过介绍php中XML转换为JSON的方法,为有这方面需求的开发者提供了参考。值得注意的是,本文所介绍的xml2array函数足以胜任一般的XML数据转换任务,但在实际使用过程中,还需根据具体业务需求进行代码优化和错误处理。

后端开发标签