XML数组和对象,反之亦然

惊人的互相转换,还是因为麻烦。程序很反感麻烦猿

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

执行结果:

XML数组和对象,反之亦然

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'];

版权声明:本文博客原创文章,转载请注明出处 http://blog.csdn.net/buyingfei8888

上一篇:null 和System.DBNull.Value


下一篇:[Robot Framework] 校验字符串中是否包含某个子字符串,校验同时满足两个条件中任意一个