> php教程 > php手册 > 본문

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

WBOY
풀어 주다: 2016-06-13 10:48:29
원래의
915명이 탐색했습니다.

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的专栏

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!