用php实现xml与json之间的相互转换

php实现xmljson之间的相互转换:

   

    相关函数请查看php手册。

   

    一,参考xml如下

   

    <?xml version=1.0encoding=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

   

    public function xml_to_json$source{

   

    ifis_file$source)){ //传的是文件,还是xmlstring的判断

   

    $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

   

    利用递归函数

   

    public function json_to_xml$source,$charset='utf8‘) {

   

    ifempty$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.>;

   

    //判断是否是数组,或者,对像

   

    ifis_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>。原因自己分析下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值