xml转数组的方法
来源:互联网 发布:香港php虚拟主机 编辑:程序博客网 时间:2024/04/29 20:06
转自,特别表示感谢,解决了我很大的问题http://isblog.blog.163.com/blog/static/724167520116241635526/
xml转数组的方法
2011-07-24 01:16:24| 分类: PHP学习|举报|字号 订阅
前言: 有时因项目需要,在调用别人接口时返回xml格式的内容,这时需要处理xml数据并写入数据库中,因个人技术有限开始很纠结,后面发现已有高手写出了怎么一个方法,看了很不错。(收藏了~~)
第一种简单方法:
第二种复杂方法:
function simplexml4array($xmle){
第一种简单方法:
/**
* xml转数组方法 *
* @param xml $xml xml格式字符串
* @param boolean $recursive 是否解释一串XML入一个对象中
* @return array
*/
function XML2Array ( $xml , $recursive = false ) {
if ( ! $recursive ){
$tmpData = simplexml_load_string ( $xml ) ;
}else{
$tmpData = $xml ;
}
$newArray = array () ;
foreach ( $tmpData as $key => $value ){
$value = ( array ) $value ;
if ( isset ( $value [ 0 ] ) && ! is_object ( $value [ 0 ] ) ){
$newArray [ $key ] = trim ( $value [ 0 ] ) ;
}else{
$newArray [ $key ] = XML2Array ( $value , true ) ;
}
}
return $newArray ;
}
解析xml格式如下:
$str=<<<XML
<?xml version="1.0" ?>
<library>
<book>
<ddd>swwss</ddd>
<ddd id="y7" dd='yy'>
<dd>ccc</dd>
</ddd>
</book>
<return>
<name>lin</name>
<age>44</age>
</return>
<return>
<name>lin2</name>
<age>45</age>
</return>
</library>
XML;
对如下格式解析不出属性:
<ddd id="y7" dd='yy'>swwss</ddd>
function simplexml4array($xmle){
$haschildren=false;
foreach($xmle->attributes() as $k=>$c)
{
$r[$xmle->getName()]['@att'][$k]=(string)$c;//保存属性值
}
foreach($xmle->children() as $k=>$c)
{
$haschildren=true;
$res = simplexml4array($c);
if(!empty($res)){
$r[$xmle->getName()][]=$res;
}
}
if(!$haschildren)
{
$str=(string)$xmle;
if(!empty($str)){
$r[$xmle->getName()]['@txt']=(string)$xmle;//保存文本值
}
}
return $r;
}
//附上一个测试的例子
$str=<<<XML
<?xml version="1.0" ?>
<library>
<book>
<ddd id="x6" dd="xx">swwss</ddd>
<ddd id="y7" dd='yy'>
<dd>ccc</dd>
</ddd>
</book>
<return>
<name>lin</name>
<age>44</age>
</return>
<return>
<name>lin2</name>
<age>45</age>
</return>
</library>
XML;
$xml = simplexml_load_string($str);
$arr = simplexml4array($xml);
print_r($arr);
下面是得到的数组,有些人认为数组里有下标[0]、[1]等之类的是多余的(开始我也怎么认为),后面经测试这样做是出现相同的标签时区分开多个。如测试的例子中就验证了这一点,因为有时xml要返回多条值,而为了得到这些值它们之间就需要使用下标来区分。
输出数组格式:
原文地址:http://bbs.chinaunix.net/thread-808855-1-1.html
下面是得到的数组,有些人认为数组里有下标[0]、[1]等之类的是多余的(开始我也怎么认为),后面经测试这样做是出现相同的标签时区分开多个。如测试的例子中就验证了这一点,因为有时xml要返回多条值,而为了得到这些值它们之间就需要使用下标来区分。
输出数组格式:
- Array
- (
- [library] => Array
- (
- [0] => Array
- (
- [book] => Array
- (
- [0] => Array
- (
- [ddd] => Array
- (
- [@att] => Array
- (
- [id] => x6
- [dd] => xx
- )
- [@txt] => swwss
- )
- )
- [1] => Array
- (
- [ddd] => Array
- (
- [@att] => Array
- (
- [id] => y7
- [dd] => yy
- )
- [0] => Array
- (
- [dd] => Array
- (
- [@txt] => ccc
- )
- )
- )
- )
- )
- )
- [1] => Array
- (
- [return] => Array
- (
- [0] => Array
- (
- [name] => Array
- (
- [@txt] => lin
- )
- )
- [1] => Array
- (
- [age] => Array
- (
- [@txt] => 44
- )
- )
- )
- )
- [2] => Array
- (
- [return] => Array
- (
- [0] => Array
- (
- [name] => Array
- (
- [@txt] => lin2
- )
- )
- [1] => Array
- (
- [age] => Array
- (
- [@txt] => 45
- )
- )
- )
- )
- )
- )
原文地址:http://bbs.chinaunix.net/thread-808855-1-1.html
0 0
- xml转数组的方法
- php xml转数组
- php xml转数组
- xml数据转数组
- xml转数组
- XML转数组
- xml数据转数组
- XML转数组
- Java List转数组的正确方法
- PHP中 xml转数组
- List转数组toArray方法
- List转数组toArray方法
- 集合转数组的toArray()和toArray(T[] a)方法
- 集合转数组的toArray()和toArray(T[] a)方法
- PHP中把对象转数组的几个方法
- ----php之XML转数组函数
- 记录下 XML对象转数组
- php 数组转xml 数组转json xml转数组 json转数组
- 1020. Big Integer
- 读取网路图片
- css3 content 生成内容
- 应付账款价差处理:跨月结账
- 关于atomic_t 原子变量的操作
- xml转数组的方法
- Python 读写例子
- 数据库设计之主键的思考
- Java线程中run和start方法
- awk - 文件分析
- 互联网图片文字识别 互联网图片识别 彩信识别 彩信图片文字识别
- 类间关系: 依赖,关联,组合,聚合
- 机器学习算法优缺点及其应用领域
- Objc的底层并发API