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);
执行结果:
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
XML数组和对象,反之亦然的更多相关文章
- ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)
ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...
- PHP 数组和对象的相互转化
对象和数组的相互转化在开发中也是很常见,一般不是多维的情况下直接(array)和(object)就可搞定了,多维的话,遍历下也就可以了: 1 <?php 2 class test 3 { 4 p ...
- C# xml数组的序列和反序列化
先来看xml <?xml version="1.0"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSche ...
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,可以帮助开发人员非常方便的將XML和Java对象进行相互转换. 本文以一个简单 ...
- JSON和XML格式与对象的序列化及反序列化的辅助类
下面的代码主要是把对象序列化为JSON格式或XML格式等 using System; using System.Collections.Generic; using System.Globalizat ...
- JavaScript学习总结(二)数组和对象部分
pt学习总结(二)数组和对象部分 2016-09-16 分类:WEB开发.编程开发.首页精华暂无人评论 来源:trigkit4 分享到:更多1 对象部分 Object类型 Object ...
- 使用sessionStorage、localStorage存储数组与对象(转)
http://my.oschina.net/crazymus/blog/371757 使用sessionStorage.localStorage存储数组与对象 发表于3个月前(2015-01-26 1 ...
- js之数组,对象,类数组对象
许久不写了,实在是不知道写点什么,正好最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,这里就简单对于定义以及一下相同点,不同点 ...
随机推荐
- C#-循环滚动字幕,timer,从左至右,从右至左,暂停---ShinePans
Lable的Left属性是能够更改的,可是 Right属性不能够更改,所以我们能够利用 这个特点做自加 自减运算 using System; using System.Collections.Gene ...
- IBM AIX Shell编写遭遇错误一2
在IBM AIX 5.3平台上,编写一个shell的时候遇到几个错误. 0. exp: 0403-027 The parameter list is too long 看这个提示是说命令行长度太长了, ...
- Java命令学习系列(7):Javap(转)
原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件 ...
- HttpMime 处理 多部件 POST 请求
HttpMime 处理 多部件 POST 请求 在有的场合例如我们要用到上传文件的时候,就不能使用基本的GET请求和POST 请求了,我们要使用多部件的POST请求.由于Android 附带的 Htt ...
- hdu 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】(转)
HDU 动态规划(46道题目)倾情奉献~ [只提供思路与状态转移方程] Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包 ...
- java反射中Method类invoke方法的使用方法
package com.zsw.test; import java.lang.reflect.Method;import java.lang.reflect.InvocationTargetExcep ...
- cf 323A A. Black-and-White Cube 立体构造
A. Black-and-White Cube time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图: 从上图我们可以 ...
- SoccerLeagueDB
create table if not exists League ( lid int primary key auto_increment, lyear int not null, s ...
- poj 1789 Truck History(kruskal算法)
主题链接:http://poj.org/problem?id=1789 思维:一个一个点,每两行之间不懂得字符个数就看做是权值.然后用kruskal算法计算出最小生成树 我写了两个代码一个是用优先队列 ...