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. Mac下关闭Sublime Text 3的更新检查

    操作如下: 注意:update_check的属性前后都要有一个逗号. , "update_check":false, 然后还需要一步,就是注册破解,在[Help]->[Ent ...

  2. javascript004_ECMA5数组新特性

    •对于ECMAscript5这个版本的Array新特性补充: –位置方法:indexOf      lastIndexOf –迭代方法:every  filter   forEach   some   ...

  3. Linux下SSH工具 PAC Manager的安装

    PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...

  4. Java Struts(文件下载)

    1.从注册成功页面跳转至用户详情页面(跳转至UserListAction) 2.UserListAction调用service获得用户列表,并将这些数据传送到UserList.jsp中,UserLis ...

  5. python pip 安装OpenCV

    cmd pip install opencv-contrib-python -i https://pypi.mirrors.ustc.edu.cn/simple/

  6. PHP之mb_substr_count使用

    mb_substr_count (PHP 4 >= 4.3.0, PHP 5, PHP 7) mb_substr_count - Count the number of substring oc ...

  7. [心平气和读经典]The TCP/IP Guide(000)

    The TCP/IP Guide [Page 39] The TCP/IP Guide: Introduction and "Guide to The Guide" | 第1章 概 ...

  8. ubuntu init启动流程

    ubuntu的init方式有两种:一种是System V initialization,一种是Upstart.ubuntu6.10以前的版本是第一种方式,之后的版本是第二种方式. 在旧式的System ...

  9. redis数据类型(五)set类型

    一. set类型 set是无序集合,最大可以包含(2 的 32 次方-1)个元素. set 的是通过 hash table 实现的,所以添加,删除,查找的复杂度都是 O(1). hash table ...

  10. Java Stream File & IO

    摘录自:http://www.runoob.com/java/java-files-io.html Java 流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需 ...