array2xml和xml2array,xml与array的互相转化
来源:互联网 发布:2016年网络茶叶销售 编辑:程序博客网 时间:2024/06/07 16:23
php在做后台服务器的时候,经常会遇到这种情况,需要解析来自前台的xml文件,并将数据以xml格式返回,在这种情况下,xml与php中关联数组的转化是非常频繁的事情。比如flex和其他客户端程序与服务器的交互,经常会使用这种方法。下面是我归纳的两个方法,大大简化了xml与数组相互转化的工作量。
/** * * 将简单数组转化为简单的xml * @param string $data 要进行转化的数组 * @param string $tag 要使用的标签 * @example * $arr = array( 'rtxAccount'=>'aaron','ipAddr'=>'192.168.0.12', 'conferenceList'=>array('conference'=> array( array('conferenceId'=>1212,'conferenceTitle'=>'quanshi 444','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'), array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com') ) ) ); 转化为: <rtxAccount>aaron</rtxAccount> <ipAddr>192.168.0.12</ipAddr> <conferenceList> <conference> <conferenceId>1212</conferenceId> <conferenceTitle>quanshi 444</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>454</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>6767</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>232323</conferenceId> <conferenceTitle>quanshi uuu</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>8989</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> <conference> <conferenceId>1234343212</conferenceId> <conferenceTitle>quanshi meetting</conferenceTitle> <smeAccount>bingxu.dong@quanshi.com</smeAccount> </conference> </conferenceList> */ function array2xml($data,$tag = '') { $xml = ''; foreach($data as $key => $value) { if(is_numeric($key)) { if(is_array($value)) { $xml .= "<$tag>"; $xml .= array2xml($value); $xml .="</$tag>"; } else { $xml .= "<$tag>$value</$tag>"; } } else { if(is_array($value)) { $keys = array_keys($value); if(is_numeric($keys[0])) { $xml .=array2xml($value,$key); } else { $xml .= "<$key>"; $xml .=array2xml($value); $xml .= "</$key>"; } } else { $xml .= "<$key>$value</$key>"; } } } return $xml; } }
xml2array
/** * * 将简单的xml转化成关联数组 * @param string $xmlString xml字符串 * @example * <?xml version="1.0" encoding="UTF-8" standalone="yes"?><RTXConferenceReqDTO><conferenceTitle>IT交流会</conferenceTitle><startTime>2011-12-19 12:00:00</startTime><rtxAccount>andy1111111</rtxAccount><ipAddr>192.168.1.56</ipAddr><duration>120</duration><conferenceType>1</conferenceType><invitees><invitee><rtxAccount>被邀请人1的RTX账号</rtxAccount><tel>被邀请人1电话号码</tel></invitee><invitee><rtxAccount>被邀请人2的RTX账号</rtxAccount><tel>被邀请人2电话号码</tel></invitee></invitees></RTXConferenceReqDTO>转化之后的关联数组:Array( [conferenceTitle] => IT交流会 [startTime] => 2011-12-19 12:00:00 [rtxAccount] => andy1111111 [ipAddr] => 192.168.1.56 [duration] => 120 [conferenceType] => 1 [invitees] => Array ( [invitee] => Array ( [0] => Array ( [rtxAccount] => 被邀请人1的RTX账号 [tel] => 被邀请人1电话号码 ) [1] => Array ( [rtxAccount] => 被邀请人2的RTX账号 [tel] => 被邀请人2电话号码 ) ) )) */function xml2array($xmlString = ''){$targetArray = array();$xmlObject = simplexml_load_string($xmlString);$mixArray = (array)$xmlObject;foreach($mixArray as $key => $value){if(is_string($value)){$targetArray[$key] = $value;}if(is_object($value)){$targetArray[$key] = xml2array($value->asXML());}if(is_array($value)){foreach($value as $zkey => $zvalue){if(is_numeric($zkey)){$targetArray[$key][] = xml2array($zvalue->asXML());}if(is_string($zkey)){$targetArray[$key][$zkey] = xml2array($zvalue->asXML());}}}}return $targetArray;}
- array2xml和xml2array,xml与array的互相转化
- list与array的互相转化
- xml与javaBean的互相转化
- DataSet 和 Xml 互相转化
- DataTable和Xml互相转化
- java用xstream实现xml与实体的互相转化
- XML配置文件和对象的互相转化(使用Digester)
- js 把xml与json互相转化
- 【C# MVC工具类】DataSet/DataTable 与Xml文件的互相转化
- 字符串与十六进制之间的互相转化
- 字符串数与整数的互相转化
- char 与 wchar_t 的互相转化
- 栈与队列的互相转化
- NSDate与NSString的互相转化
- 欧拉角与旋转矩阵的互相转化
- 利用xstream进行java对象和xml之间的互相转化
- List 和Array的转化
- 【Java】JAXB 处理 复杂XML 与JavaBean 互相转化过程
- MFC使用CSplitterWnd分割窗口的创建
- 通过CREATESTRUCT 的结构体对象修改窗口没效果 原因剖析
- Windows server 2008 无法建域控 提示没有管理员密码
- Android NFC 开发教程
- oracle监听器和服务配置
- array2xml和xml2array,xml与array的互相转化
- java Thread(1)
- 一日一点RakNet(33)--Cloud Computing
- 多线程群发邮件小例子
- 浅谈求最大公约数--java实现
- iOS开发应用程序UI设计的15项黄金法则
- 如何利用 Zsync 命令更新 Ubuntu 光盘镜像
- JQuery EasyUi之界面设计——通用的JavaScript
- SVN 常用命令集合