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

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

WBOY
Freigeben: 2016-06-06 20:29:36
Original
1148 Leute haben es durchsucht

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

}


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage