国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

探討:array2xml和xml2array以及xml與array的互相轉化

2024-05-04 23:10:57
字體:
來源:轉載
供稿:網友

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.survivalescaperooms.com'),
array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.survivalescaperooms.com'),
array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.survivalescaperooms.com'),
array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'http://www.survivalescaperooms.com'),
array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.survivalescaperooms.com'),
array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'http://www.survivalescaperooms.com')
)
)
);
轉化為:
<rtxAccount>aaron</rtxAccount>
<ipAddr>192.168.0.12</ipAddr>
<conferenceList>
<conference>
<conferenceId>1212</conferenceId>
<conferenceTitle>quanshi 444</conferenceTitle>
<smeAccount></smeAccount>
</conference>
<conference>
<conferenceId>454</conferenceId>
<conferenceTitle>quanshi meetting</conferenceTitle>
<smeAccount></smeAccount>
</conference>
<conference>
<conferenceId>6767</conferenceId>
<conferenceTitle>quanshi meetting</conferenceTitle>
<smeAccount></smeAccount>
</conference>
<conference>
<conferenceId>232323</conferenceId>
<conferenceTitle>quanshi uuu</conferenceTitle>
<smeAccount></smeAccount>
</conference>
<conference>
<conferenceId>8989</conferenceId>
<conferenceTitle>quanshi meetting</conferenceTitle>
<smeAccount></smeAccount>
</conference>
<conference>
<conferenceId>1234343212</conferenceId>
<conferenceTitle>quanshi meetting</conferenceTitle>
<smeAccount></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;

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆川县| 子洲县| 客服| 林州市| 平乡县| 大安市| 衡水市| 彭阳县| 广东省| 新津县| 濮阳市| 济南市| 海晏县| 措勤县| 错那县| 屏东市| 武鸣县| 乌兰浩特市| 北票市| 原平市| 台江县| 泗阳县| 南皮县| 龙里县| 库尔勒市| 松滋市| 库伦旗| 吉林市| 巴林左旗| 乾安县| 东平县| 定南县| 本溪市| 吉隆县| 开封市| 攀枝花市| 山阴县| 农安县| 延庆县| 乌兰察布市| 图木舒克市|