PHP XML和数组互相转换

转换代码如下

    //数组转XML
    function arrayToXml($arr)
    {
        $xml = "<xml>";
        foreach ($arr as $key=>$val)
        {
            if (is_numeric($val)){
                $xml.="<".$key.">".$val."</".$key.">";
            }else{
                 $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
            }
        }
        $xml.="</xml>";
        return $xml;
    }

    //将XML转为array
    function xmlToArray($xml)
    {
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);
        $values = json_decode(json_encode(simplexml_load_string($xml, ‘SimpleXMLElement‘, LIBXML_NOCDATA)), true);
        return $values;
    }

Array转XML

$money = 101;
$sender = "方倍工作室";
$obj2 = array();
$obj2[‘wxappid‘]             = APPID;
$obj2[‘mch_id‘]             = MCHID;
$obj2[‘mch_billno‘]            = MCHID.date(‘YmdHis‘).rand(1000, 9999);
$obj2[‘client_ip‘]            = $_SERVER[‘REMOTE_ADDR‘];
$obj2[‘re_openid‘]             = $openid;
$obj2[‘total_amount‘]       = $money;
$obj2[‘min_value‘]             = $money;
$obj2[‘max_value‘]             = $money;
$obj2[‘total_num‘]             = 1;
$obj2[‘nick_name‘]          = $sender;
$obj2[‘send_name‘]          = $sender;
$obj2[‘wishing‘]            = "恭喜发财";
$obj2[‘act_name‘]              = "方倍工作室送红包";
$obj2[‘remark‘]              = "关注公众账号";

转换后

<xml>
  <wxappid><![CDATA[wx1b7559b818e3c123]]></wxappid>
  <mch_id>1235571234</mch_id>
  <mch_billno>1235571234201605241726128109</mch_billno>
  <client_ip><![CDATA[127.0.0.1]]></client_ip>
  <re_openid><![CDATA[oiPuduGV7gJ_MOSfAWpVmhhgXh-U]]></re_openid>
  <total_amount>101</total_amount>
  <min_value>101</min_value>
  <max_value>101</max_value>
  <total_num>1</total_num>
  <nick_name><![CDATA[方倍工作室]]></nick_name>
  <send_name><![CDATA[方倍工作室]]></send_name>
  <wishing><![CDATA[恭喜发财]]></wishing>
  <act_name><![CDATA[方倍工作室送红包]]></act_name>
  <remark><![CDATA[关注公众账号]]></remark>
</xml>

XML转为Array

<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[发放成功]]></return_msg>
<result_code><![CDATA[SUCCESS]]></result_code>
<err_code><![CDATA[MONEY_LIMIT]]></err_code>
<err_code_des><![CDATA[发放成功]></err_code_des>
<mch_billno><![CDATA[1235571234201605241651123985]]></mch_billno>
<mch_id>1235571234</mch_id>
<wxappid><![CDATA[wx1b7559b818e3c123]]></wxappid>
<re_openid><![CDATA[oiPuduGV7gJ_MOSfAWpVmhhgXh-U]]></re_openid>
<total_amount>1</total_amount>
</xml>

转换后

array(10) {
  ["return_code"]=>
  string(7) "SUCCESS"
  ["return_msg"]=>
  string(12) "发放成功"
  ["result_code"]=>
  string(7) "SUCCESS"
  ["err_code"]=>
  string(11) "MONEY_LIMIT"
  ["err_code_des"]=>
  string(12) "发放成功"
  ["mch_billno"]=>
  string(28) "1235571234201605241651123985"
  ["mch_id"]=>
  string(10) "1235571234"
  ["wxappid"]=>
  string(18) "wx1b7559b818e3c123"
  ["re_openid"]=>
  string(28) "oiPuduGV7gJ_MOSfAWpVmhhgXh-U"
  ["total_amount"]=>
  string(1) "1"
}
时间: 2024-08-26 20:33:45

PHP XML和数组互相转换的相关文章

php xml与数组的转换函数

function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key.">&l

一个简单的XML与数组之间的转换

xml是网络使用最多的数据交换格式,所以,不掌握怎么操作它,又有蛋疼的了. php中可以操作xml的类/函数很多,个人认为最简单的是SimpleXMLElement这个类,它的使用就跟其名字一样:简单.当然要想全面自如的操作xml,还得借助其他的类.SimpleXMLElement主要是对xml的进行节点的添加和获取,以及输出整个xml文本内容,但是对于实现一个简单的与数组之间的内容转换,已经足够了. 比如我们现在在接一个sdk,对方接口传过来的是一个简单的xml格式数据,我们需要取到它,并作一

simplexml_load_string 转换xml为数组

php simplexml_load_string 函数可以很简单转换 xml 字符串为 SimpleXMLElement 对象 但是,对象的值不好取,例如: result => SimpleXMLElement Object ( [code] => 000000 [desc] => 成功 ) ,通过 result->code 或 result->code[0] 都无法取到具体的值,返回 SimpleXMLElement Object( [0] => 000000) 反

json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar 提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件 说明:因为工作中项目用到的版本是1.1的对应jdk1.3的版本,故本篇博客是基于1.1版本介绍的. 对应此版本的javadoc下载

【PHP原生】xml和数组互转(微信支付签名算法)

数组转XML publicfunction arrayToXml($arr) { $xml ="<xml>"; foreach($arr as $key => $val){ if(is_numeric($val)){ $xml .="<". $key .">". $val ."</". $key .">"; }else $xml .="<"

C#结构体和字节数组的转换函数

在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到. 一般都会采用结构来表示字节数组.但结构与字节数组直接的转换实在很麻烦. 字节操作不但容易出错,而且每增加一个结构,就自己实现一遍,实在是烦不胜烦. 有没有简单的方法呢?当然有.可以采用非托管区的一些方法来实现. 首先,导入命名空间:System.Runtime.InteropServices; 定义结构的时候,要给结构指定特性. 如: //

IOS xml 与NSDictionary 互相转换

引言: 在ios中经常遇到 xml文件或字符串 转换成NSDictionary: 需求: web服务端请求和返回的数据格式为xml:需根据解析xml文件动态生成控件:表单可能填值并需临时保存:一个表单就是<a/>包含内容,表单只要id,name就行: 如果表单填写值,需再<a/>里添加value. <a> <f>1</f>   <!--id--> <n>2ewew</n>  <!--名字--> &l

PHP XML To Array将XML转换为数组

1 // Xml 转 数组, 包括根键,忽略空元素和属性,尚有重大错误 2 function xml_to_array( $xml ) 3 { 4 $reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/"; 5 if(preg_match_all($reg, $xml, $matches)) 6 { 7 $count = count($matches[0]); 8 $arr = array(); 9 for($i

php中 xml json 数组 之间相互转换

php中 xml json  数组 之间相互转换 1 数组转json $result = array( 'status' =>$status, 'message'=>$message, 'data'=>$data, ); json_encode($result);