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

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数组和对象,反之亦然的更多相关文章

  1. ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)

    ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...

  2. PHP 数组和对象的相互转化

    对象和数组的相互转化在开发中也是很常见,一般不是多维的情况下直接(array)和(object)就可搞定了,多维的话,遍历下也就可以了: 1 <?php 2 class test 3 { 4 p ...

  3. C# xml数组的序列和反序列化

    先来看xml <?xml version="1.0"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSche ...

  4. Java&Xml教程(十一)JAXB实现XML与Java对象转换

    JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...

  5. Java&amp;Xml教程(十一)JAXB实现XML与Java对象转换

    JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,可以帮助开发人员非常方便的將XML和Java对象进行相互转换. 本文以一个简单 ...

  6. JSON和XML格式与对象的序列化及反序列化的辅助类

    下面的代码主要是把对象序列化为JSON格式或XML格式等 using System; using System.Collections.Generic; using System.Globalizat ...

  7. JavaScript学习总结(二)数组和对象部分

    pt学习总结(二)数组和对象部分 2016-09-16    分类:WEB开发.编程开发.首页精华暂无人评论     来源:trigkit4 分享到:更多1 对象部分 Object类型 Object  ...

  8. 使用sessionStorage、localStorage存储数组与对象(转)

    http://my.oschina.net/crazymus/blog/371757 使用sessionStorage.localStorage存储数组与对象 发表于3个月前(2015-01-26 1 ...

  9. js之数组,对象,类数组对象

    许久不写了,实在是不知道写点什么,正好最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,这里就简单对于定义以及一下相同点,不同点 ...

随机推荐

  1. ASP.NET 联想控件(Autocomplete)测试可用 ascx

    效果图 前台 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Auto ...

  2. 什么样的企业造什么样的软件最easy成功?

    事件1: 一般软件企业按功能分,大体分业务应用型软件和系统工具型软件. 按市场分,应用型软件企业较多,直接贴近生活:系统工具类较少,间接贴近大众较少. 事件2: 软件企业中,当中中小型企业老板存在非常 ...

  3. 利用Nginx构建负载均衡server

    大家都知道.一个域名相应一个IP地址,而一个WebSite则相应一个IP地址上相应port服务的应用程序(或位置).而大型站点的并发訪问量很大,这些站点是怎样在一台Webserver上实现负载均衡的呢 ...

  4. 用XAML做网页!!—开篇

    原文:用XAML做网页!!-开篇 这几日一直没发表新文章,一来是因为事比较多,二来就是我在研究使用XAML挑战传统HTML来做网页,这很可能是在全球的首次尝试,至少我从未找到任何可供参考的相关资料. ...

  5. JVM指令集(指令码、助记符、功能描述)(转)

    JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式:  aconst_null 功能描述:  null进栈. 指令 ...

  6. 通信协议:HTTP、TCP、UDP(转)

    原文出处: 碧雪轩的博客 TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP   HTTP   UDP三者的关系 ...

  7. 从PCI上读取数据 线程和定时器效率

    从PCI上读取数据 线程和定时器效率 线程: mythread=AfxBeginThread(StartContinuous,(LPVOID)1,THREAD_PRIORITY_NORMAL,0,CR ...

  8. 1104. Don’t Ask Woman about Her Age(数论)

    a*b^n(mod(b-1) =a(mod(b-1) http://acm.timus.ru/problem.aspx?space=1&num=1104 #include <stdio. ...

  9. Linux 软连接与硬连接

    Linux 软连接与硬连接 对于一个文件来说,有唯一的索引接点与之相应,而对于一个索引接点号,却能够有多个文件名称与之相应.因此,在磁盘上的同一个文件能够通过不同的路径去訪问该文件.注意在Linux下 ...

  10. 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...