JSON作为数据交换可以说已经成为了一种事实上的标准,但是前几年和它对应的xml虽然说用的越来越少,但是我感觉还是有他可以应用的地方。

json更偏重于程序员来使用和解读,而xml则更适合用户来使用和解读。因此,存在这样的场景:用户使用xml来构造数据,通过一定的转换工具

转成我们需要的数据格式,同时如果需要的话则可以转成对应的json.

在php中一种非常好用的xml解析模式: simpleXML

比如:

<?xml version='1.0' standalone='yes'?>
<Messages>
<msg id='1'>
<title>This is Title</title>
<content>Here is Content</content>
<time>2008-03-20 21:50:23</time>
<reply id='11'>reply 1</reply>
<reply id='12'>reply 2</reply>
</msg>
</Messages>

上面这段xml代码,可以非常简单地实现如下:

(1) 构造SimpleXMLElement 对象

代码片断 
$xml = simplexml_load_file('Messages.xml'); 
如果这段xml 已经被读入到一个字符串$messages 中,则可以使用如下语句: 
代码片断 
$xml = simplexml_load_string('Messages.xml'); 
(2)输出留言1 的标题 
代码片断 
//可以使用属性的方式访问子节点,通过节点的标签名可直接得到节点的内容 
echo $xml->msg->title; 
(3)输出留言1 的第一条回复信息 
代码片断 
//同级别的多个同名节点自动成为数组,可以通过索引下标访问其内容 
echo $xml->msg->reply[0]; 
(4)输出留言的id 
代码片断 
//节点的属性与值被封装成为关联数组的键与值 
echo $xml->msg['id']; 
(5)输出第二条回复的id 
代码片断 
//成为二维数组,第一维表示节点,第二维表示属性 
echo $xml->msg->reply[1][ 'id']; 
(6)依次输出所有回复的id 
代码片断 
//使用foreach 对同名节点进行遍历 
foreach ($xml->msg->reply as $reply){ 
echo $reply['id']; 

(7)使用XPath 检索所有的回复信息 
代码片断 
//xpath 方法直接检索定位(//表示任意深度) 
foreach ($xml->xpath('//reply') as $reply){ 
echo $reply.'<br>'; 
}

(8)遍历留言1 所有的子节点 
代码片断 
//children 方法得到所有子节点 
foreach ($xml->msg->children() as $field){ 
echo $field.'<br>'; 

(9)重新设置留言1 的发布时间 
代码片断 
//直接设置属性 
$xml->msg->time = '2008-03-21 00:53:12'; 
(10)设置回复2 的id 属性 
代码片断 
//设置管理数组的值 
$xml->msg->reply[1]['id'] = '222'; 
(11)新增一个描述消息作者的字段 
代码片断 
//直接设置属性 
$xml->msg->author = 'zhangsan'; 
(12)将消息的作者保存为属性 
代码片断 
//设置关联数组的key 
$xml->msg['author'] = 'zhangsan'; 
(13)重新保存对象到文件 
代码片断 
//保存 
$xml->asXML('MessagesNew.xml'); 
应该可以看出SimpleXML 有多简单了吧! 
3 实例:XML 文件与数据库之间进行数据交互 
下面提供一个相对完整的实例,将留言信息从MySQL 数据库中查询出来,保存成为一 
个如上例所示的XML 文件。留言信息和回复信息独立保存在两张表中,使用MySQL 函数包

参考:

http://www.cnblogs.com/likwo/archive/2011/08/24/2151836.html

xml php 解析的更多相关文章

  1. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  2. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

  3. xml的解析与创建——bing到youdao导入文件的转换

    首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...

  4. iOS-数据持久化基础-JSON与XML数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  5. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  6. iOS边练边学--iOS中的XML数据解析

    XML的解析方式 SAX 大小文件都可以 NSXMLParser DOM 最好是小文件 GDataXML NSXMLParser的用法 创建解析器来解析 // 创建XML解析器 NSXMLParser ...

  7. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

  8. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  9. xml数据解析调研

    XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...

  10. XML JSON解析--基本功能

    一,json的解析 json文件: {"code": "cn","cities":   [{"name": " ...

随机推荐

  1. JS DATE对象详解

    1.建立时间对象:可获取年,月,日,星期,时,分,秒 var d = new Date(); console.log(d.getFullYear()+'年'+d.getMonth()+'月'+d.ge ...

  2. Capture Conversion解读

    Let G name a generic type declaration with n type parameters A1,...,An with corresponding bounds U1, ...

  3. 14 线程间协作的两种方式:wait、notify、notifyAll和Condition

    原文链接:http://www.cnblogs.com/dolphin0520/p/3920385.html 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者- ...

  4. Ubuntu18.0.4配置Hadoop1.2.1环境

    在虚拟机中安装Linux,我这里选用VMware虚拟机:Linux版本是Ubuntu VMware安装Ubuntu这里就不做说明了,网上有很多教程 1.安装jdk apt install openjd ...

  5. android studio导入android studio工程

    在导入其他android studio工程的时候因为gradle和sdk.tool等版本不一样,会导致android studio自动去后台下载,导致占用硬盘越来越大,最主要的时候会等待很久,不知道要 ...

  6. JS类型和类 小记录

    七种数据类型 number 记住二进制是0b开头 八进制0开头,后来ES5添加了0o开头 十六进制是0x开头 string var s = ' + ' // 无回车符号 或 var s = ` ` / ...

  7. 详解 Webpack+Babel+React 开发环境的搭建

    1.认识Webpack 构建应用前我们先来了解一下Webpack, Webpack是一个模块打包工具,能够把各种文件(例如:ReactJS.Babel.Coffeescript.Less/Sass等) ...

  8. 跨域 cookies

    script标签请求的js脚本,如果跨域了,请求会带有外域的cookies信息. XMLHttpRequest请求跨域时,需要有Access-Control-*等的头信息,如果需要将cookies传输 ...

  9. EF 查询数据不读取缓存的解决办法

    EF查询(不使用缓存):Set<T>().AsNoTracking() 今天工作中发现一个很妖的问题,修改产品界面,修改数据后,数据库的值发生变化,感觉掉坑里了. 然后发现读取对象的方法是 ...

  10. RabbitMQ---1、安装与部署

    一.下载资源 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.(在官网自行选择版本) 1.otp_win64_20.2.exe 下载地 ...