轉: http://www.php230.com/transform-simplexmlelement-object-to-array-with-php.htmljavascript
改爲:屬性和元素都做爲數組的值php
php代碼:html
<? function xmlToArr($xml, $root = true) { if(!$xml->children()) { return (string)$xml; } $array = array(); foreach($xml->children() as $element => $node) { $totalElement = count($xml->{$element}); if(!isset($array[$element])) { $array[$element] = ""; } // Has attributes if($attributes = $node->attributes()) { $data = array(); foreach($attributes as $attr => $value) { $data[$attr] = (string)$value; } if($totalElement > 1) { $data2 = xmlToArr($node, false); $array[$element][] = array_merge($data,$data2); } else { $data2['value'] = (count($node) > 0) ? xmlToArr($node, false) : (string)$node; $array[$element] = array_merge($data,$data2); } } else { if($totalElement > 1) { $array[$element][] = xmlToArr($node, false); } else { $array[$element] = xmlToArr($node, false); } } } if($root) { return array($xml->getName() => $array); } else { return $array; } } $array = array(); $xml=simplexml_load_file("manhua.xml"); print_r(xmlToArr($xml,false));
manhua.xmljava
<?xml version="1.0" encoding="utf-8" ?> <list> <manhua id="1" abc="2"> <title tt="1">刀劍神域</title> <test> <a>1</a> <b>2</b> </test> <test> <a>11</a> <b>22</b> </test> <dir>djsy</dir> <img>djsy.jpg</img> <info></info> </manhua> <manhua> <test> <a>1</a> <b>2</b> </test> <test> <a>11</a> <b>22</b> </test> <title>刀劍神域_calibur</title> <dir>djsy_calibur</dir> <img>djsy_calibur.jpg</img> <info></info> </manhua> <manhua> <title>刀劍神域_fairydance</title> <dir>djsy_fairydance</dir> <img>djsy_fairydance.jpg</img> <info></info> </manhua> <manhua> <title>刀劍神域_progressive</title> <dir>djsy_progressive</dir> <img>djsy_progressive.jpg</img> <info></info> </manhua> <manhua> <title>刀劍神域_少女們的樂章</title> <dir>djsy_snmdyz</dir> <img>djsy_snmdyz.jpg</img> <info></info> </manhua> <manhua> <title>刀劍神域_幽靈子彈</title> <dir>djsy_youlingzidan</dir> <img>djsy_youlingzidan.jpg</img> <info></info> </manhua> <manhua> <title>小刀劍神域</title> <dir>xiaodaojianshenyu</dir> <img>xiaodaojianshenyu.jpg</img> <info></info> </manhua> <manhua> <title>新娘summer</title> <dir>xinian_summer</dir> <img>xinian_summer.jpg</img> <info></info> </manhua> <manhua> <title>Sword_ArtOnline_Silica_Edition</title> <dir>Sword_ArtOnline_Silica_Edition</dir> <img>Sword_ArtOnline_Silica_Edition.jpg</img> <info></info> </manhua> </list>
Jquery+Ajax,遍歷對象和數組:node
function listObj(obj,str,level){ if(!obj) return str; level++; for (x in obj) { if(typeof(obj[x])=="object"){ str+=x+'---'+level+'級目錄--<br/>\n'; str=listObj(obj[x],str,level) }else{ str+=x+'--'+obj[x]+'<br/>\n'; } } return str; } $(function(){ $.getJSON("1.php","", function(obj){ var str=""; var manhua=obj.manhua; $.each(manhua,function(n,value) { str+='--'+n+'--1級目錄---'+'<br/>\n'; str=listObj(value,str,1); }); $("#st").html(str); });