将XML文件转换为数组

时间:2018-04-19 04:32:28

标签: php arrays xml dom

我尝试将XML文件转换为PHP中的数组。但是,在读取第一个数组时,它不是键和值数组的形式。

有没有办法以Key和Value的形式转换第一个数据?提前致谢。

  

readXML.php

function convertXMLFileToArray()
{
    $xml_file = 'customers.xml';
    $array_name = 'customer';
    //Check whether the file exist
    if(file_exists($xml_file)){
        //Read the data from xml file
        $dt = simplexml_load_file($xml_file,null,LIBXML_NOCDATA);
        $json = json_encode($dt);
        $outer_array = json_decode($json,TRUE);
        //Remove outer array
        $array = $outer_array[$array_name];

    }
    else{
        $array = null;
    }
    var_dump($array);
    return $array;
}

案例1

  

customers.xml

<customers>
   <customer>
        <cid>1</cid>
        <name>Adam</name>
        <age>20</age>
   </customer>
</customers>

输出

array(3) { ["cid"]=> string(1) "1" ["name"]=> string(4) "Adam" ["age"]=> string(2) "20"} 

情况2

  

customers.xml

<customers>
   <customer>
        <cid>1</cid>
        <name>Adam</name>
        <age>20</age>
   </customer>
   <customer>
        <cid>2</cid>
        <name>David</name>
        <age>23</age>
   </customer>
</customers>

输出

array(2) { 
[0]=> array(3) { ["cid"]=> string(1) "1" ["name"]=> string(4) "Adam" 
["age"]=> string(2) "20" } 
[1]=> array(3) { ["cid"]=> string(1) "2" ["name"]=> string(4) "David" 
["age"]=> string(2) "23" } 
}

1 个答案:

答案 0 :(得分:1)

这是一个选项(使用simplexml_load_string代替文件):

function getCustomersFromXml($xml, $key = 'customer')
{
    $data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
    $out = [];
    foreach ($data->$key as $item) {
        $out[] = (array) $item;
    }
    return $out;
}

因此,您加载XML数据,循环customers对象并将每个customer对象作为数组推送到输出中。

https://eval.in/990764