PHP下使用SimpleXML处理XML文件

时间: 2013-07-31  分类: php+Mysql  收藏

以下为Messages.xml 文件内容,里面包含这样一段XML 代码:
Messages.xml

1
2
3
4
5
6
7
8
9
10
<?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>
 

每条信息包括属性id,子节点title、content、time, 以及若干条对于它的回复信息,每条回复包括属性id 及回复的内容。

 

用SimpleXML 处理并输出此XML 文档内容的过程以及方法如下。
1. 构造SimpleXMLElement 对象
    $xml = simplexml_load_file(‘Messages.xml’);
    如果这段xml 已经被读入到一个变量$a 中,则可以使用如下语句:
    $xml = simplexml_load_string($a);
2.输出留言1 的标题
    //可以使用属性的方式访问子节点,通过节点的标签名可直接得到节点的内容
    echo $xml->msg->title;
3.输出留言1 的第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’);

分享到:

评论

昵 称: