xml php 解析
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 解析的更多相关文章
- 通过正则表达式实现简单xml文件解析
这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- xml的解析与创建——bing到youdao导入文件的转换
首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...
- iOS-数据持久化基础-JSON与XML数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- 八、Android学习第七天——XML文件解析方法(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...
- iOS边练边学--iOS中的XML数据解析
XML的解析方式 SAX 大小文件都可以 NSXMLParser DOM 最好是小文件 GDataXML NSXMLParser的用法 创建解析器来解析 // 创建XML解析器 NSXMLParser ...
- 转 web项目中的web.xml元素解析
转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45) 阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...
- iOS - XML 数据解析
前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...
- xml数据解析调研
XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...
- XML JSON解析--基本功能
一,json的解析 json文件: {"code": "cn","cities": [{"name": " ...
随机推荐
- accessToken的使用
1.accessToken是啥,干嘛用? 形象解释:申请调兵-->皇帝同意-->兵符-->开始调兵 拿到用户在第三方平台的唯一的标识; 获取用户的nickname,头像,邮箱等其他信 ...
- HUE配置文件hue.ini 的sqoop模块详解(图文详解)(分HA集群和非HA集群)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- webpack使用 babili-webpack-plugin 报错 "original.line and original.column are not numbers"
按照这个解决 https://github.com/chentsulin/electron-react-boilerplate/issues/1300 changing "babili-we ...
- Nginx 反向代理(http转htpps,并支持80端口继续提交post请求)
项目是一个web server + 多个client的形式,client由用户安装在自己的电脑上 由http升级为https后,我们通过在Nginx做了80端口重定向443的配置,使用户通过访问htt ...
- PHP之string之ltrim()函数使用
ltrim (PHP 4, PHP 5, PHP 7) ltrim - Strip whitespace (or other characters) from the beginning of a s ...
- CyclicBarrier正确的使用方法和错误的使用方法
CyclicBarrier是java推出的一个并发编程工具,它用在多个线程之间协同工作.线程约定到达某个点,到达这个点之后的线程都停下来,直到最后一个线程也到达了这个点之后,所有的线程才会得到释放.常 ...
- HaspMap的新奇用法
HashMap<String, String> map = new HashMap<String,String>(){ private static final long se ...
- EF4.4增删改查实例
第一.先创建一个名为Store数据库,将下面脚本代码执行创建表: USE [Store] GO /****** Object: Table [dbo].[Category] Script Date: ...
- SQL脚本添加删除修改字段
1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNc ...
- leetcode简单题目两道(5)
Problem Given an integer (signed bits), write a function to check whether it . Example: Given num = ...