来源:http://hi.baidu.com/phphack/blog/item/0b6ace4f2de3501bb2de056a.html
1
SimpleXML 简介
要处理XML
文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,
对XML
文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM
树,通过对DOM
树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,
DOM
的处理过程相对烦琐,都不很适合新手的入门。
PHP5
推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小
巧精干,只提供了少量的几个方法函数,但用它处理起XML
文件功能却非常强大,操作也
非常的简单。
首先,它提供有简单的函数可以从XML
文档、字符串、或DOM 对象上直接构造出
SimpleXMLElement
对象;其次,SimpleXMLElement 提供有简单的方法可以进行属性、子节
点、和XPath
的操作;然而,SimpleXML 最简单的地方是,它提供有使用标准对象的属性和
对象迭代器进行节点操作的方法,这一处理思路使得用PHP
对XML 文档的处理得到了极大
的简化。
2
SimpleXML 入门示例
下面我们通过一些小的代码片段,稍微了解一下SimpleXML
的强大和简洁。为举例方便,
我们使用一个Messages.xml
文件,里面包含这样一段XML 代码:
Messages.xml
<?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
文档,每条信息包括属性id,子节点title、content、time
以及若干条对于它的回复信息,每条回复包括属性id
及回复的内容。
用SimpleXML
处理并输出此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');
附录:
PHP
SimpleXML 函数
PHP:指示支持该函数的最早的
PHP 版本。
转:http://www.binghe.org/?p=159
说明下:simplexml
获取的节点数据类型都是对象
例:
$this -> item_no =
$simpleXmlObj -> SKU;
var_dump($this ->
item_no);
结果是:
object(SimpleXMLElement)[5]
string'SKU000001'(length=9)
如果要用来做运算比较等需要转换类型:
例:
$this -> item_no =
(string) $simpleXmlObj -> SKU;
var_dump($this ->
item_no);
结果:
string'SKU000001'(length=9)
分享到:
相关推荐
php下使用SimpleXML处理XML文件.pdf
要处理XML 文件,有两种传统的处理思路:SAX 和DOM。
主要介绍了PHP中使用SimpleXML检查XML文件结构实例,本文讲解使用SimpleXML来检查一个XML文件是否符合规范的方法,需要的朋友可以参考下
主要介绍了php使用simplexml_load_file加载XML文件并显示XML的方法,实例分析了simplexml_load_file操作XML文件的技巧,非常具有实用价值,需要的朋友可以参考下
主要介绍了PHP使用DOM和simplexml读取xml文档的方法,结合实例形式分析了php使用DOM及simplxml针对xml文件的创建、载入、读取等相关操作技巧,需要的朋友可以参考下
SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式,只要您知道 XML 文档的布局。 SimpleXML 转换 XML 文档到 SimpleXMLElement 对象。 通过正常的属性选择器和数组迭代器,这个对象能够像其他对象一样...
php5自带类simplexml 对xml文件进行增删改查,并对xml数据进行正序倒序查询并分页。希望对小数据网站有所帮助!
PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理。 什么是 PHP SimpleXML? SimpleXML 是 PHP 5 中的新特性。 SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。 与 DOM 或 ...
在php5中读写xml文档是非常方便的,可以直接使用php的SimpleXML方法来快速解析与生成xml格式的文件,下面举例说明: 创建一个SimpleXML对象有三种方法: 1.使用new关键字创建 复制代码 代码如下:$xml=”<personinfo>...
xml就不多解释了,php也提供了操作xml的方法,php操作xml可以有多种方式如domdocment,simplexml,xmlwriter等其中最简单的应该是simplexml了,这次就来说说simplexml怎么读取和解析xml文件或字符串 1. 生成xml字符串...
SimpleXML是一个php扩展,有了它可以非常容易的操作xml文件 class CI_ManipulateXML { var $xml=''; function CI_ManipulateXML($xmlcontent) { $this->xml=$xmlcontent; } function ConvertXML() { try { $xml...
主要介绍了php+xml编程之SimpleXML的应用,实例分析了SimpleXML函数操作XML文件的方法,需要的朋友可以参考下
XML文件在PHP网站开发的轻量级应用中使用非常广泛,而PHP解析和读取XML文件的方式有很多种,比如JS DOM、SimpleXml、Xpath等方式解析XML文件,今天来讲讲在PHP中使用Xpath解析XML的实例,同时通过Xpath解析XML的实例...
帮助那些不熟悉使用PHP 处理XML 的新手使用PHP 环境中的DOM 和SimpleXML 读取、解析、操作并编写简单短小的XML 文件。
时常会碰到需要对XML文档进行解析,PHP4版本自带了XML解析器(sax),PHP5版本增加了SimpleXML(基于dom)的XML扩展,对XML的解析更是非常方便,今天和大家分享下在不同环境下对XML文档进行解析的方法。 XML文档 &...