Array2xml and xml2array, mutual conversion plan between xml and array_PHP tutorial

WBOY
Release: 2016-07-13 17:50:06
Original
732 people have browsed it

When PHP is working as a back-end server, it often encounters this situation. It needs to parse the xml file from the front-end and return the data in xml format. In this case, the conversion between xml and the associative array in PHP is Very frequent thing. For example, flex and other client programs often use this method to interact with the server. The following are two methods I have summarized, which greatly simplify the workload of converting xml and array.
[php]
/**
*
* Convert simple array into simple xml
* @param string $data Array to be converted
* @param string $tag The tag to use
* @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 meeting','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>6767,'conferenceTitle'=>'quanshi meeting','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>232323,'conferenceTitle'=>'quanshi uuu','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>8989,'conferenceTitle'=>'quanshi meeting','smeAccount'=>'bingxu.dong@quanshi.com'),
array('conferenceId'=>1234343212,'conferenceTitle'=>'quanshi meeting','smeAccount'=>'bingxu.dong@quanshi.com')
)
)
                                                                                                                                              );
Convert to:
                                                                                                                                                                                                                                                                                                                                    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 .= "<$tag>"; 
                    $xml .= array2xml($value); 
                    $xml .=""; 
                } 
                else 
                { 
                    $xml .= "<$tag>$value"; 
                }     
            } 
            else 
            { 
                if(is_array($value)) 
                { 
                    $keys = array_keys($value); 
                    if(is_numeric($keys[0])) 
                    { 
                        $xml .=array2xml($value,$key); 
                    } 
                    else 
                    { 
                        $xml .= "<$key>"; 
                        $xml .=array2xml($value); 
                        $xml .= ""; 
                    } 
                     
                } 
                else 
                { 
                    $xml .= "<$key>$value"; 
                } 
            } 
        } 
        return $xml; 
    }              

xml2array

[php]
/**
* *
* Convert simple xml into associative array
* @param string $xmlString xml string
* @example
*

IT Exchange Conference
2011-12-19 12:00:00
andy1111111
192.168.1.56
120
1

                                                                                                                                                                                                                                                                                                   & Lt; tel & gt; invited person 1 phone number & lt;/tel & gt;
         
                                                                                                                                                                                                                                                                                                                     & Lt; tel & gt; invited person 2 phone number & lt;/tel & gt;
         


Associative array after conversion:
Array
(
[conferenceTitle] => IT Exchange Conference 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
(
                                                                                                                                                                                                                                                             Since                   (
[rtxAccount] => Invitee 1’s RTX account
[tel] => Invitee 1 phone number
)

[1] = & gt; Array
                      (
[rtxAccount] => Invitee 2’s RTX account
[tel] => Invitee 2 phone number
)

)

)

)
​​*/ 
    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中关联数组...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template