php下使用SimpleXML 处理XML 文件

2019-04-10 00:07:11王振洲

代码片断
//使用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 函数包
可以非常简单地实现如下:

代码如下:

<?php
//cong work atWed Mar 20 19:59:04 CST 2008
//将数据从MySQL 数据库中保存到XML 文件中
//可以使用如下几种方式构造初始的SimpleXMLElement 对象
//1、从DOM 对象中构造
//$dom = new DOMDocument();
//$dom->loadXML("<rows></rows>");
//$xml = simplexml_import_dom($dom);
//2、从仅包含根标签的xml 文件中构造
//$xml = simplexml_load_file('messages.xml');
//3、直接写根标签字符串构造
//$xml = simplexml_load_string("<Messages></Messages>");
//4、使用SimpleXMLElement 类的构造器构造
$xml = new SimpleXMLElement('<Messages></Messages>');
//连接数据库
mysql_connect('localhost','root','root');
mysql_select_db('test');
mysql_query('set names utf8');
//查询消息
$rs = mysql_query("select * from messages");
$i = 0; //用做多条消息的数组索引下标
while($row = mysql_fetch_assoc($rs)){
$xml->message[$i] = ''; //… … … … … … … … … … … … ①
$xml->message[$i]['id'] = $row['id'];
$xml->message[$i]->title = $row['title'];
$xml->message[$i]->content = $row['content'];
$xml->message[$i]->time = $row['time'];
//根据消息id 查询它相关的回复信息
$rsReply = mysql_query("select * from replies where mid={$row['id']}");
$j = 0; //用于做多条回复的索引下标
相关文章 大家在看