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": " ...
随机推荐
- js读取cookie信息
1. 第一种方式读取cookie信息:用document.cookie.split(“; “)的方式把字符串分割成几个段,然后遍历整个数组 //javascript方法 function getCoo ...
- Struts2 resulttype
本文章只介绍较为常用的三种result type 1.dispatcher 2.redirect 3.redirectAction 一.dispatcher 用于转向JSP页面,这个是默认的结果类型, ...
- spingAOP在springMVC中的使用(我用在拦截controller中的方法。主要用于登录控制)
首先截取了网上的一张配置execution的图片 我在项目中关于aop的配置:如果拦截controller的方法,需要在spring-mvc.xml文件中加入(如果在spring.xml中加入则无法拦 ...
- maven在pom文件中添加你想要的jar包
概述:POM 文件里面的依赖jar包经常需要添加, 仅需要在google中代码查找 :maven 你需的jar包名称 repository 用了Maven,所需的JAR包就不能再像往常一样,自己找到并 ...
- [PY3]——函数——生成器(yield关键字)
函数—生成器篇 1. 认识和区分可迭代or生成器 1.1 可迭代对象 当你建立了一个列表,你可以逐项地读取这个列表,这叫做一个可迭代对象 当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代 ...
- i.mx6 Android5.1.1 System server
1. 概述: 1. Zygote进程是Android Java世界的开创者,所有的Java应用程序进程都由Zygote进程创建: 2. Zygote创建应用程序进程过程其实就是复制自身进程地址空间作为 ...
- 最新的 Vue 相关开源项目库汇总
优秀的vue 开源后台管理开源系统框架 https://panjiachen.github.io/vue-element-admin-site/#/zh-cn/README UI组件 开发框架 实用库 ...
- [译]用R语言做挖掘数据《三》
决策树和随机森林 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到 ...
- NDK编程jni学习入门,声明native方法,使其作为java与c的交互接口
首先,新建工程,简历一个jave类,在其中声明native方法,关键字为native,表面这个方法是从java以为的语言实现. 其次,要实用javac编译此java文件(javac是jdk中的命令,需 ...
- C# OO(初级思想)。
继承,多态,封装 在C#中,为了能够合理描述自然界的规律,面向对象的编程引入了继承的概念,是面向对象编程中最重要的概念之一,定义了如何根据现有的类创建新类的过程. 继承:一个类派生出来的子类具有这个类 ...