zoukankan      html  css  js  c++  java
  • php中将SimpleXMLElement Object转化为普通数组

    php中将SimpleXMLElement Object转化为普通数组

    转: http://www.php230.com/transform-simplexmlelement-object-to-array-with-php.html

    改成:属性和元素都作为数组的值

    php代码:

    <?
    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.xml

    <?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,遍历对象和数组:

    function listObj(obj,str,level){
    	
    	if(!obj)
    		return str;
    	
    	level++;
    	for (x in obj)  
    	{  
    		if(typeof(obj[x])=="object"){
    			str+=x+'---'+level+'级目录--<br/>
    ';
    			str=listObj(obj[x],str,level)
    		}else{
    			str+=x+'--'+obj[x]+'<br/>
    ';
    		}
    	} 
    	return str;
    }
    
    $(function(){    
     $.getJSON("1.php","", function(obj){ 
     		var str="";
    		 var manhua=obj.manhua;
    		 $.each(manhua,function(n,value) {   
    			str+='--'+n+'--1级目录---'+'<br/>
    ';
    			str=listObj(value,str,1);
    				 
               });  
    		   $("#st").html(str);
    });
    

      

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/jevil/p/4862082.html
Copyright © 2011-2022 走看看