为了账号安全,请及时绑定邮箱和手机立即绑定

如何将数组转换为SimpleXML

如何将数组转换为SimpleXML

饮歌长啸 2019-06-01 16:50:10
如何将数组转换为SimpleXML如何在PHP中将数组转换为SimpleXML对象?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

一个简短的:

<?php

$test_array = array (
  'bla' => 'blub',
  'foo' => 'bar',
  'another_array' => array (
    'stack' => 'overflow',
  ),);$xml = new SimpleXMLElement('<root/>');array_walk_recursive($test_array, array ($xml, 'addChild'));print $xml->asXML();

结果

<?xml version="1.0"?><root>
  <blub>bla</blub>
  <bar>foo</bar>
  <overflow>stack</overflow></root>

键和值是交换的-您可以用array_flip()在数组行走之前。array_walk_recursive需要PHP 5。你可以用array_walk相反,但你不会'stack' => 'overflow'在XML中。


查看完整回答
反对 回复 2019-06-01
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

下面是php5.2代码,它将任意深度的数组转换为XML文档:

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
                        )   
                )

        ))

生成的XML如下:

<?xml version="1.0"?><student_info>
    <total_stud>500</total_stud>
    <student>
        <id>1</id>
        <name>abc</name>
        <address>
            <city>Pune</city>
            <zip>411006</zip>
        </address>
    </student>
    <student>
        <id>1</id>
        <name>abc</name>
        <address>
            <city>Mumbai</city>
            <zip>400906</zip>
        </address>
    </student></student_info>

PHP片段

<?php// function definition to convert array to xmlfunction array_to_xml( $data, &$xml_data ) {
    foreach( $data as $key => $value ) {
        if( is_numeric($key) ){
            $key = 'item'.$key; //dealing with <0/>..<n/> issues
        }
        if( is_array($value) ) {
            $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('<?xml version="1.0"?><data></data>');

// 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');?>

关于.的文件SimpleXMLElement::asXML在这个片段中使用


查看完整回答
反对 回复 2019-06-01
  • 3 回答
  • 0 关注
  • 521 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信