PHP下使用SimpleXML处理XML文件
以下为Messages.xml 文件内容,里面包含这样一段XML 代码:
Messages.xml
|
每条信息包括属性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’);