http://blog.csdn.net/baochao95/article/details/52737631
转换代码:
<?php
function xml2arr($simxml){
$simxml = (array)$simxml;
foreach($simxml as $k => $v){
if(is_array($v) || is_object($v)){
$simxml[$k] = xml2arr($v);
}
}
return $simxml;
}
$simxml = simplexml_load_file('./06.xml');
print_r(xml2arr($simxml));
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
06.xml文件:
转换前:
这个对象中既有数组,数组中又包含了对象
转换后:
将这个对象中的所有对象全转换成数组
2、数组转换为XML
(1)一维数组转换为XML数据
代码:
<?php
$arr = array(
'name' => 'webbc',
'age' => '22',
);
function arr2xml($arr){
$simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
foreach($arr as $k=>$v){
$simxml->addChild($k,$v);
}
header('Content-type:text/xml;charset=utf-8');
return $simxml->saveXML();
}
echo arr2xml($arr);
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
输出结果:
(2)多维数据转换为XML
代码:
<?php
$arr = array(
'name' => 'webbc',
'age' => '22',
'job' => array(
'title' => '销售经理',
'salary' => '12K',
'team' => array('小明','小华','小林')
)
);
function arr2xml($arr,$parentNode=null){
if($parentNode === null){
$simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
}else{
$simxml = $parentNode;
}
foreach($arr as $k=>$v){
if(is_array($v)){
arr2xml($v,$simxml->addChild($k));
}else if(is_numeric($k)){
$simxml->addChild('item'.$k,$v);
}else{
$simxml->addChild($k,$v);
}
}
header('Content-type:text/xml;charset=utf-8');
return $simxml->saveXML();
}
echo arr2xml($arr);
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
输出结果:
注意:纯数字不能作为xml的标签名,所以如果遇到索引数组,就必须使用字符来创建xml标签!