php xml2array,探讨:array2xml和xml2array以及xml与array的互相转化

本篇文章是对array2xml和xml2array以及xml与array的互相转化进行了详细的分析介绍,需要的朋友参考下

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'=>'http://www.jb51.net'),

array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.jb51.net'),

array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.jb51.net'),

array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'http://www.jb51.net'),

array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.jb51.net'),

array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.jb51.net')

)

)

);

转化为:

aaron

192.168.0.12

1212

quanshi 444

454

quanshi meetting

6767

quanshi meetting

232323

quanshi uuu

8989

quanshi meetting

1234343212

quanshi meetting

*/

function array2xml($data,$tag = '')

{

$xml = '';

foreach($data as $key => $value)

{

if(is_numeric($key))

{

if(is_array($value))

{

$xml .= "";

$xml .= array2xml($value);

$xml .="$tag>";

}

else

{

$xml .= "$value$tag>";

}

}

else

{

if(is_array($value))

{

$keys = array_keys($value);

if(is_numeric($keys[0]))

{

$xml .=array2xml($value,$key);

}

else

{

$xml .= "";

$xml .=array2xml($value);

$xml .= "$key>";

}

}

else

{

$xml .= "$value$key>";

}

}

}

return $xml;

}

}

xml2array

复制代码 代码如下:

/**

*

* 将简单的xml转化成关联数组

* @param string $xmlString xml字符串

* @example

*

IT交流会

2011-12-19 12:00:00

andy1111111

192.168.1.56

120

1

被邀请人1的RTX账号

被邀请人1电话号码

被邀请人2的RTX账号

被邀请人2电话号码

转化之后的关联数组:

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;

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值