本文实例讲述了php实现xml与json之间的相互转换功能。分享给大家供大家参考,具体如下:
用php实现xml与json之间的相互转换:
相关函数请查看php手册。
一、参考xml如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<? xml version = "1.0" encoding = "UTF-8" ?> < humans > < zhangying > < name >张三</ name > < sex >男</ sex > < old >26</ old > </ zhangying > < tank > < name >tank</ name > < sex > < hao >yes</ hao > < aaaa >no</ aaaa > </ sex > < old >26</ old > </ tank > </ humans > |
二、xml转换成json
利用simplexml
1
2
3
4
5
6
7
8
9
|
public function xml_to_json( $source ) { if ( is_file ( $source )){ //传的是文件,还是xml的string的判断 $xml_array =simplexml_load_file( $source ); } else { $xml_array =simplexml_load_string( $source ); } $json = json_encode( $xml_array ); //php5,以及以上,如果是更早版本,请查看JSON.php return $json ; } |
三、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
|
public function json_to_xml( $source , $charset = 'utf8' ) { if ( empty ( $source )){ return false; } //php5,以及以上,如果是更早版本,请查看JSON.php $array = json_decode( $source ); $xml = '' ; $xml .= $this ->change( $array ); return $xml ; } public function change( $source ) { $string = "" ; foreach ( $source as $k => $v ){ $string .= "<" . $k . ">" ; //判断是否是数组,或者,对像 if ( is_array ( $v ) || is_object ( $v )){ //是数组或者对像就的递归调用 $string .= $this ->change( $v ); } else { //取得标签数据 $string .= $v ; } $string .= "" ; } return $string ; } |
上面的方法json_to_xml,可以支持<name>aaaa</name>,不支持<name type='test'>aaaaa</name>看代码就能看明白.
希望本文所述对大家PHP程序设计有所帮助。