我尝试将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;
}
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"}
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" }
}
答案 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
对象作为数组推送到输出中。