标签:style blog http io ar color sp for 文件
为甚要相互转换,还是因为麻烦,程序员都是反感麻烦的
1 数组转xml
<?php
/*
一维数组转xml
思路:
循环数组每个单元,加入到xml文档节点中去
*/
/*
$arr = array(
'name'=> '丁三',
'age'=>29
);
function arr2xml($arr) {
$simxml = new simpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
// simpleXMLElement对象如何增加子节点?
foreach($arr as $k=>$v) {
$simxml->addChild($k,$v);
}
return $simxml->saveXML();
}
*/
$arr = array(
'name'=> '丁三',
'age'=>29,
'job'=>array(
'title'=>'经理',
'salary'=>8888,
'team'=>array('小红','小明','小华')
)
);
function arr2xml($arr,$node=null) {
if($node === null) {
$simxml = new simpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
} else {
$simxml = $node;
}
// simpleXMLElement对象如何增加子节点?
foreach($arr as $k=>$v) {
if(is_array($v)) {
//$simxml->addChild($k);
arr2xml($v,$simxml->addChild($k));
} else if(is_numeric($k)) { //标签不能以数字开头,和变量类似
$simxml->addChild('item' . $k,$v);
} else {
$simxml->addChild($k,$v);
}
}
return $simxml->saveXML();
}
header('content-type: text/xml');
echo arr2xml($arr);
2 xml转数组
<?php
/***
// 访问时,一会用->, 一会用[],不方便
// 接下来我们练习xml转数组
echo $simxml->book[0]->title;
利用simplexml对象把xml文件转成数组,
***/
/*
对象 用属性名->属性值,存储变量
数组 用键名->键值 ,来存储变量
二者区别不大,在js里,对象就可以看成关联数组来操作.
*/
$simxml = simplexml_load_file('./book.xml');
/*
print_r($simxml);
echo '<hr />';
// 类型强制转换,把对象转成数组
print_r((array) $simxml); //最外层是数组,里面可能还包含对象
*/
// 写一个函数,递归把simpleXML对象转成数组
// 思路:先把最外层对象转成数组,再循环数组,
// 某个单元只要还是对象,就继续调用自身来转换
function toArray($sim) {
$arr = (array) $sim;
foreach($arr as $k=>$v) {
if($v instanceof simplexmlelement || is_array($v)) {
$arr[$k] = toArray($v);
}
}
return $arr;
}
print_r($simxml);
print_r($xmlarr = toArray($simxml));
echo $xmlarr['book']['1']['title'];
标签:style blog http io ar color sp for 文件
原文地址:http://blog.csdn.net/buyingfei8888/article/details/41287251