注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

~~

~~

 
 
 

日志

 
 

php 将xml文件转换为数组  

2013-11-07 14:17:32|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
<?php
//将xml转换为array
$xmlString = '<?xml version="1.0" encoding="utf-8"?>
<request>
    <header>
        <version>{version}</version>
        <accountID>{accountID}</accountID>
        <serviceName> GetNearbyScenery</serviceName>
        <digitalSign>{digitalSign}</digitalSign>
        <reqTime>{reqTime}</reqTime>
    </header>
    <body>
        <sceneryId>{sceneryId}</sceneryId>
        <page>{page}</page>
        <pageSize>{pageSize}</pageSize>
    </body>
</request>';
$arr = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
print_r($arr['header']);
print_r($arr['body']);
?>

第二种方式:
alipay.xml
<?xml version="1.0" encoding="utf-8"?>
<request>
<header>
<version>{version}</version>
<accountID>{accountID}</accountID>
<serviceName> GetNearbyScenery</serviceName>
<digitalSign>{digitalSign}</digitalSign>
<reqTime>{reqTime}</reqTime>
</header>
<body>
<sceneryId>{sceneryId}</sceneryId>
<page>{page}</page>
<pageSize>{pageSize}</pageSize>
</body>
</request>


xmltoarr.php
<?php
function xmlNameSpaceToArray(SimpleXmlIterator $xml, $nameSpaces=Null){
$output = Null;
$preparedArray = array();
for($xml->rewind(); $xml->valid(); $xml->next()) {
$key = $xml->key();
if(!isset($preparedArray[$key])) { $preparedArray[$key] = array(); $i=0; }
else $i = count($preparedArray[$key]);
$simple = true;
foreach($xml->current()->attributes() as $k=>$v) {
$preparedArray[$key][$i][$k]=(string)$v;
$simple = false;
}
if($nameSpaces) foreach($nameSpaces as $nid=>$name) {
foreach($xml->current()->attributes($name) as $k=>$v) {
$preparedArray[$key][$i][$nid.':'.$k]=(string)$v;
$simple = false;
}
}
if($xml->hasChildren()) {
if($simple) $preparedArray[$key][$i] = xmlNameSpaceToArray($xml->current(), $nameSpaces);
else $preparedArray[$key][$i]['content'] = xmlNameSpaceToArray($xml->current(), $nameSpaces);
} else {
if($simple) $preparedArray[$key][$i] = strval($xml->current());
else $preparedArray[$key][$i]['content'] = strval($xml->current());
}
$i++;
}
$output = $preparedArray;
return $preparedArray;
}

function xmlToArray($xmlFilePath){
$xml = new SimpleXmlIterator($xmlFilePath , null, true);
$nameSpaces = $xml->getNamespaces(true);
$output = xmlNameSpaceToArray($xml,$nameSpaces);
return $output;
}

$xmlFilePath = 'alipay.xml';
$output = xmlToArray($xmlFilePath);
print_r($output);
?>


  评论这张
 
阅读(355)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018