由于某些原因,我需要将json转换为xml,在网上想找个将json转成xml的便捷方法,还是挺多的,但不能完全实现我的需求,最后还是在 海底苍鹰 所写的基础上完善了一下。以下是我所写的方法。
下载源文件
json转换成xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| function json_to_xml($source, $charset = 'UTF-8') { if (empty($source)) { return false; } $array = json_decode($source); $xml = '<?xml version="1.0" encoding="' . $charset . '"?>'; $xml .= _json_to_xml($array); return $xml; }
function _json_to_xml($source, $pkey = '') { $string = ''; foreach ($source as $k => $v) { if (is_array($v)) { $string .= _json_to_xml($v, $k); } else { $key = is_numeric($k) ? $pkey : $k; $string .= empty($key) ? '' : '<' . $key . '>'; if (is_object($v)) { $string .= _json_to_xml($v, $k); } else { $string .= $v; } $string .= empty($key) ? '' : '</' . $key . '>'; } } return $string; }
|
注意:此方法支持<name>aaaa</name>
,不支持<name type='test'>aaaaa</name>
xml转换成json
1 2 3 4 5 6 7 8 9 10 11 12 13
| function xml_to_json($source) { if (is_file($source)) { $xml = simplexml_load_file($source); } elseif (is_string($source)) { $xml = simplexml_load_string($source); } else { return false; } $json = json_encode(array($xml->getName() => $xml)); return $json; }
|
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| { "update": { "Android": { "version": "3", "name": "Naturalwill's APP", "note": "一些细节的优化" }, "iOS": { "version": "1", "name": "Naturalwill's APP", "note": "正式上线" }, "Oldversion": { "Android": [ { "version": "1", "name": "Naturalwill's APP", "note": "正式上线" }, { "version": "2", "name": "Naturalwill's APP", "note": "一些细节的优化" } ] } } }
|
json_to_xml
↓↑ xml_to_json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?xml version="1.0" encoding="UTF-8"?> <update> <Android> <version>3</version> <name>Naturalwill's APP</name> <note>一些细节的优化</note> </Android> <iOS> <version>1</version> <name>Naturalwill's APP</name> <note>正式上线</note> </iOS> <Oldversion> <Android> <version>1</version> <name>Naturalwill's APP</name> <note>正式上线</note> </Android> <Android> <version>2</version> <name>Naturalwill's APP</name> <note>一些细节的优化</note> </Android> </Oldversion> </update>
|