Heim > Backend-Entwicklung > PHP-Tutorial > array2xml和xml2array,xml与array的互相转计划_PHP教程

array2xml和xml2array,xml与array的互相转计划_PHP教程

WBOY
Freigeben: 2016-07-13 17:50:06
Original
756 Leute haben es durchsucht

php在做后台服务器的时候,经常会遇到这种情况,需要解析来自前台的xml文件,并将数据以xml格式返回,在这种情况下,xml与php中关联数组的转化是非常频繁的事情。比如flex和其他客户端程序与服务器的交互,经常会使用这种方法。下面是我归纳的两个方法,大大简化了xml与数组相互转化的工作量。
[php]
/**
     *
     * 将简单数组转化为简单的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'=>'bingxu.dong@quanshi.com'),
                                array('conferenceId'=>454,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'),
                                array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'),
                                array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'bingxu.dong@quanshi.com'),
                                array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com'),
                                array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meetting','smeAccount'=>'bingxu.dong@quanshi.com')
                                )
                            )
        
                                
        );
        转化为:
        aaron
        192.168.0.12
       
           
                1212
                quanshi 444
                bingxu.dong@quanshi.com
           

           
                454
                quanshi meetting
                bingxu.dong@quanshi.com
           

           
                6767
                quanshi meetting
                bingxu.dong@quanshi.com
           

           
                232323
                quanshi uuu
                bingxu.dong@quanshi.com
           

           
                8989
                quanshi meetting
                bingxu.dong@quanshi.com
           

           
                1234343212
                quanshi meetting
                bingxu.dong@quanshi.com
           

       

     */ 
    function array2xml($data,$tag = '') 
    { 
        $xml = ''; 
         
        foreach($data as $key => $value) 
        { 
            if(is_numeric($key)) 
            { 
                if(is_array($value)) 
                { 
                    $xml .= ""; 
                    $xml .= array2xml($value); 
                    $xml .="$tag>"; 
                } 
                else 
                { 
                    $xml .= "$value$tag>"; 
                }     
            } 
            else 
            { 
                if(is_array($value)) 
                { 
                    $keys = array_keys($value); 
                    if(is_numeric($keys[0])) 
                    { 
                        $xml .=array2xml($value,$key); 
                    } 
                    else 
                    { 
                        $xml .= ""; 
                        $xml .=array2xml($value); 
                        $xml .= "$key>"; 
                    } 
                     
                } 
                else 
                { 
                    $xml .= "$value$key>"; 
                } 
            } 
        } 
        return $xml; 
    }              

xml2array

[php]
/**
     * 
     * 将简单的xml转化成关联数组
     * @param string $xmlString  xml字符串
     * @example
     *

    IT交流会
    2011-12-19 12:00:00
    andy1111111
    192.168.1.56
    120
    1
   
       
            被邀请人1的RTX账号
            被邀请人1电话号码
       

       
            被邀请人2的RTX账号
            被邀请人2电话号码
       

   


转化之后的关联数组:
Array
(
    [conferenceTitle] => IT交流会 www.2cto.com
    [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; 
         
    } 


摘自  andy1219111的专栏

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478300.htmlTechArticlephp在做后台服务器的时候,经常会遇到这种情况,需要解析来自前台的xml文件,并将数据以xml格式返回,在这种情况下,xml与php中关联数组...
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage