使用SimpleXML在PHP处理XML文件

使用SimpleXML在PHP处理XML文件
1 --简介
处理XML文件,有处理两个传统方式:SAX和dom.sax基于事件触发机制,
对XML文件进行扫描以完成处理;DOM将整个XML文件构造成DOM。
树是通过DOM树遍历而成的,这两种方法各有优缺点,SAX的思维相对抽象。
DOM的处理相当繁琐,不太适合初学者。
PHP5引入了一套新的XML处理功能,即SimpleXML。事实上,SimpleXML本身很小
聪明的是,只提供了少量的方法功能,但是用它处理XML文件的功能非常强大,而且操作也很好。
这很简单。
首先,它提供了一个简单的函数,该函数可以直接从XML文档、字符串或DOM对象构造。
simplexmlelement对象;其次,simplexmlelement提供了一个简单的方法来执行性能,小节
点,操作和XPath;然而,SimpleXML最简单的地方是,它提供了对象的属性和使用标准
对象迭代器执行节点操作的方式,这种处理思想使得XML文档的处理与PHP有很大的关系。
简化。
2 SimpleXML的入门例子
让我们通过一些小的代码片段得到的力量和简单的--一点了解。例如,例如,
我们用一个messages.xml文件包含这样一段XML代码:
messages.xml
复制代码代码如下所示:
我是Title。
下面是内容
2008-03-20 21:50:23
回复1
回复2
这是一个保存消息信息的XML文档,每一个都包含属性id、子节点标题、内容和时间。
以及对它的多次响应,每个响应包括属性id和应答的内容。
如下的处理过程和方法与SimpleXML出口这个XML文档的内容。
(1)构建simplexmlelement对象

片段
XML simplexml_load_file美元=('messages。XML);
如果XML的这一段已读入字符串$消息,您可以使用以下语句:
片段
XML simplexml_load_string美元=('messages。XML);
(2)输出消息1的标题
片段
可以使用属性访问节点,可以直接通过内容节点标签名获得该节点。
标题;
(3)输出消息1的第一个应答消息
片段
多个同名的节点自动成为数组,您可以通过索引访问它的内容。
$>答复> { 0 };
(4)输出消息的id
片段
节点属性和值被封装为关联数组键和值。
echo $ XML ->味精{ 'id' };
(5)输出第二个答复的id
片段
成为二维数组,节点的第一维表示,属性的二维表示。
echo $ XML ->味精->回复{ 1 } { 'id' };
(6)依次输出所有答复的ID。
片段
在同一个节点遍历 / /每
foreach($ XML ->味精->回复达回复){
echo回复{ 'id' };
}
(7)使用XPath检索所有答复信息
片段
用于直接检索定位( /任意深度)的XPath方法
foreach($ XML -> XPath( / /回复)达回复){
回应$;
}

(8)遍历所有子节点的信息1
片段
所有子节点都是通过子/子方法获得的。
foreach($ XML ->味精->儿童()$场){
$字段;
}
(9)重置消息1的释放时间。
片段
属性集
为XML ->味精->时间= '2008-03-21 00:53:12;
(10)设置应答2的id属性
片段
设置数组值管理
为XML ->味精->回复{ 1 } { 'id' } = '222;
(11)添加一个描述消息作者的新字段
片段
属性集
为XML ->味精->作者= 'zhangsan;
(12)将消息的作者保存为属性
片段
设置关联数组键
为XML ->味精{ } = 'zhangsan 'author ' ';
(13)将对象重新保存到文件中。
片段
保存
XML('messagesnew美元-> XML。XML);
应该看到,SimpleXML是多么容易!
3个例子:xml文件与数据库之间的数据交互
下面提供了一个比较完整的示例,用于从MySQL数据库查询消息信息并将其保存为一个。
该示例显示了一个XML文件,消息和应答信息独立地保存在两个表中,使用MySQL函数包。
它可以简单地实现如下:

代码如下:
复制代码代码如下所示:
< PHP
/ /从工作atwed 3月20日19:59:04 CST 2008
将数据从MySQL存储到数据库中的XML文件中
你可以使用下面的结构/初始simplexmlelement对象
1,从DOM对象构建
/ /美元=新DOMDocument(DOM);
/ / $ DOM -> loadXML();
/ /美元(美元= simplexml_import_dom XML DOM);
2,是由仅包含根标记的XML文件构造而成的
/ /美元=simplexml_load_file XML(XML 'messages。);
3,直接写根标记字符串构造
/ / $ XML = simplexml_load_string();
/ / 4,使用simplexmlelement类的构造函数构造
XML =新simplexmlelement美元(' ');
数据库连接
mysql_connect('localhost ','root ','root);
mysql_select_db(测试);
mysql_query(让名字utf8);
查询消息
RS = mysql_query美元(SELECT * FROM消息);
$ i = 0;用于更多新闻的数组索引。
而($行= mysql_fetch_assoc($ RS)){
为XML ->消息{我} = ''; / / .................................... 1。
为XML ->消息{我} { 'id' } = { 'id' } $行;
为XML ->消息{ $我} ->标题= $行{标题};
为XML ->消息{我} ->内容= $行{ 'content' };
为XML ->消息{我} ->时间= $行{时间};
根据消息 id查询应答消息
rsreply美元= mysql_query(SELECT * FROM回复在中= { $行{ 'id' } } );
$ j = 0; /答复索引。
而($ rowreply = mysql_fetch_assoc($ rsreply)){
为XML ->消息{ $我} ->回复{ } = {美元,美元rowreply回复};
为XML ->消息{ $我} ->回复{ $ J } { 'id' } = $ rowreply { 'id' };
美元+;
}
美元+;
}
XML('messages美元-> XML。XML);
>

唯一的地方,上面的代码是值得一提的是该行的标志。我们要去一个新的SimpleXML对象时
当添加节点或属性时,必须确保其父节点存在,否则将报告致命错误,消息是:
在后面的增量增量/递减中用作数组的对象必须通过引用返回值。

不要被海洋技巧弄糊涂了,相信读者可以通过理解上面的代码,从XML文件编写代码到MySQL。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部