Home > php教程 > php手册 > 探讨:array2xml和xml2array以及xml与array的互相转化

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

WBOY
Release: 2016-06-06 20:29:36
Original
1148 people have browsed it

本篇文章是对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;

}


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template