首頁 > php教程 > PHP源码 > 主體

将xml转换为数组

PHP中文网
發布: 2016-05-25 17:10:20
原創
1114 人瀏覽過

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 = 'http://forums.devshed.com/rss/feed-5.xml';
$output = xmlToArray($xmlFilePath);
print_r($output);
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!