探讨:array2xml和xml2array以及xml与array的互相转化_PHP
Jun 01, 2016 pm 12:05 PMphp在做后台服务器的时候,经常会遇到这种情况,需要解析来自前台的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.bitsCN.com'),
array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.bitsCN.com'),
array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.bitsCN.com'),
array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'http://www.bitsCN.com'),
array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.bitsCN.com'),
array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.bitsCN.com')
)
)
);
转化为:
*/
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
*
转化之后的关联数组:
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;
}

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bolehkah saya membuka fail XML menggunakan PowerPoint?

Menapis dan menyusun data XML menggunakan Python

Tukar data XML kepada format CSV dalam Python

Python melaksanakan penukaran antara XML dan JSON

Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML

Mengendalikan ralat dan pengecualian dalam XML menggunakan Python

Import data XML ke dalam pangkalan data menggunakan PHP

Gunakan PHP dan XML untuk memproses dan memaparkan geolokasi dan data peta
