本文实例讲述了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程序设计有所帮助。