您的位置:首页 > 其它

xml中对象转化为数组

2016-10-13 08:51 239 查看
<?php
header('content-type:text/html;charset=utf-8');
/*
* simplexml的DOM对象处理xml也可已处理html
* */
$simple = simplexml_load_file('./index.xml');
/*
* simple加载完成之后有数组也有对象
* 下面xml对象转为数组
* 用到的是递归
* */
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(toArray($simple));die;
/*
* 一维数组转换为xml
* */
$arr = array('man' => '漫', 'ge' => '哥');
function arrtoXml($arr) {
$simplexml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
foreach ($arr as $k => $v) {
$simplexml -> addChild($k, $v);
}
return $simplexml -> saveXML();
}

//echo arrtoxml($arr);die;
//header('content-type:text/xml;charset=utf-8');

/*
* 多维维数组转为xml对象
* */
$result = array(2,3,3,3,3,'name' => '哥哥', 'title' => '标题', 'age' => 25, 'boos' => array('key' => '键', 'value' => '值', 'array' => array('ma' => '骂你咋了啊'), 'bo' => array(0, 1)));
function toarrayXml($result, $node = null) {
if ($node === null) {
$simplexml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
} else {
$simplexml = $node;
}
foreach ($result as $k => $v) {
if (is_array($v)) {
toarrayXml($v, $simplexml -> addChild($k));
} else if (is_numeric($k)) {
$simplexml -> addChild('manman' . $k, $v);
} else {
$simplexml -> addChild($k, $v);

}
}
/*
* 直返会输出并不保存
* */
return $simplexml -> saveXML();
}
/*header('content-type:text/xml;charset=utf-8');
echo toarrayXml($result);*/
/* 下面是模板
* 打印之前把其他的注释去掉
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book>
<title>天龙八部</title>
<price>28.8</price>
</book>
<book>
<title>武侠小说</title>
<price>29.9</price>
</book>
</bookstore>
* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象转化为数组