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. Pycharm的配置和使用

    pycharm pycharm是一个比较好的python IDE,可以在MACOS和windows上使用,补全功能强大,而且界面十分友好,特别适合python编程人员使用. pycharm Pycha ...

  2. Cassandra概念学习系列之Cassandra是什么?

    不多说,直接上干货! http://cassandra.apache.org/ Apache Cassandra是一套开源分布式NoSQL数据库系统.它最初由Facebook开发,用于储存收件箱等简单 ...

  3. Hive 外部表新增字段或者修改字段类型等不生效

    标题比较笼统,实际情况是: 对于Hive 的分区外部表的已有分区,在对表新增或者修改字段后,相关分区不生效. 原因是:表元数据虽然修改成功,但是分区也会对应列的元数据,这个地方不会随表的元数据修改而修 ...

  4. 事件委托(js实现)

    1.事件委托的作用 事件委托的意义:,事件就是onclick,onmouseover,onmouseout等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做, ...

  5. Linux 命令学习之cd

    功能说明: cd 命令是 linux 最基本的命令语句,其他的命令都会依赖与 cd 命令.因此学好 cd 命令是必须的. 语 法:cd [目的目录] 补充说明:cd指令可让用户在不同的目录间切换,需要 ...

  6. memcached 学习笔记 1

    一 简介 1 What is Memcached? Free & open source, high-performance, distributed memory object cachin ...

  7. [转]The NTLM Authentication Protocol and Security Support Provider

    本文转自:http://davenport.sourceforge.net/ntlm.html#ntlmHttpAuthentication The NTLM Authentication Proto ...

  8. vscode下eslint代码规范

    直接上规范吧: // 将设置放入此文件中以覆盖默认设置 { "editor.fontSize": 17, "editor.tabSize": 2, " ...

  9. java技术秘籍 转摘

  10. Java求一个数组中的最大值和最小值

    原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...