How to convert array to SimpleXML

前端 未结 30 2632
遇见更好的自我
遇见更好的自我 2020-11-21 06:52

How can I convert an array to a SimpleXML object in PHP?

30条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-21 07:21

    Here is php 5.2 code which will convert array of any depth to xml document:

    Array
    (
        ['total_stud']=> 500
        [0] => Array
            (
                [student] => Array
                    (
                        [id] => 1
                        [name] => abc
                        [address] => Array
                            (
                                [city]=>Pune
                                [zip]=>411006
                            )                       
                    )
            )
        [1] => Array
            (
                [student] => Array
                    (
                        [id] => 2
                        [name] => xyz
                        [address] => Array
                            (
                                [city]=>Mumbai
                                [zip]=>400906
                            )   
                    )
    
            )
    )
    

    generated XML would be as:

    
    
        500
        
            1
            abc
            
    Pune 411006
    1 abc
    Mumbai 400906

    PHP snippet

     $value ) {
            if( is_array($value) ) {
                if( is_numeric($key) ){
                    $key = 'item'.$key; //dealing with <0/>.. issues
                }
                $subnode = $xml_data->addChild($key);
                array_to_xml($value, $subnode);
            } else {
                $xml_data->addChild("$key",htmlspecialchars("$value"));
            }
         }
    }
    
    // initializing or creating array
    $data = array('total_stud' => 500);
    
    // creating object of SimpleXMLElement
    $xml_data = new SimpleXMLElement('');
    
    // function call to convert array to xml
    array_to_xml($data,$xml_data);
    
    //saving generated xml file; 
    $result = $xml_data->asXML('/file/path/name.xml');
    
    ?>
    

    Documentation on SimpleXMLElement::asXML used in this snippet

提交回复
热议问题