Chinaunix首页 | 论坛 | 博客
  • 博客访问: 316072
  • 博文数量: 11
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 835
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-24 13:12
文章分类

全部博文(11)

文章存档

2011年(1)

2008年(10)

我的朋友

分类:

2008-06-23 09:48:40

案例
  messsages.xml文档内容如下:

<?xml version='1.0' standalone='yes'?>
  <Messages>
   <msg id='1' author='zhangsan'>
    <title>This message title</title>
    <content>Here is the content</content>
    <time>2008-12-31 22:12:32</time>
    <reply id='11'>first reply</reply>
    <reply id='22'>last reply</reply>
   </msg>
  </Messages>

 

1  创建对象(构造初始的simpleXMLElement对象)
1.1  从Dom对象中构造

  $dom = new DOMDocument();
  $dom->loadXML("");
  $xml = simplexml_import_dom($dom)


1.2  从仅包含根标签的XML文档中创建

  $xml = simplexml_load_file('messages.xml');
  // 当对一个已存在xml文档进行操作而非创建初始档时,也可以用这种方式。


1.3  直接写根标签字符串构造

  $xml = simplexml_load_string('');

1.4  使用simpleXMLElement类的构造器构造

  $xml = new SimpleXMLElement('');
  // 推荐使用这种方式构造。


2  对XML文档进行操作
2.1  访问字段值及其属性

2.1.1  输出留言1的标题和第一条回复

  echo $xml->msg->title;
  echo $xml->msg->reply[0];


2.1.2  输出留言ID和第二条回复的ID(属性值)

  echo $xml->msg['id'];
  echo $xml->msg->reply[1]['id'];
  // 第一维表示节点,第二维表示节点属性。数组索引标记自0开始。

 

2.2  遍历检索XML文档
2.2.1  遍历同名节点

// 依次输出所有回复的ID(属性)和内容(值)
  foreach($xml->msg->reply as $reply){
   echo $reply['id'].'. '.$reply.'
'
;
  }


2.2.2  遍历子节点

// 输出留言1的所有子节点内容(值)
  foreach($xml->msg->children() as $field){
   echo $field.'
'
;
  }

   注:$simpleXMLElement->children()方法得到所有子节点内容(值)。
 

2.2.3  遍历节点属性

// 遍历msg节点的所有属性
  foreach($xml->msg->attributes() as $key=>$val){
   echo $key.' = '.$val.'
'
;
  }


2.2.4  检索节点内容

// XPath 方法可以直接检索定位,双斜杠(//)表示任意深度
// 检索所有的回复信息
  foreach($xml->xpath('//reply') as $reply){
   echo $reply.'
'
;
  }


2.3  新增及设置XML文档中的节点属性
2.3.1  新增节点

// 给留言添加ip节点
  $xml->msg->ip = '202.12.33.12';


2.3.2  新增属性

// 给回复信息增加author属性
  $xml->msg->reply['author'] = 'lisi';


2.3.3 设置节点内容(值)

// 重新设置留言时间
  $xml->msg->time = '2008-06-21 12:32:12';


2.3.4 设置节点属性值

// 重设第二条回复的id
  $xml->msg->[1]['id']='222';


2.4  输出及保存对象

  echo $xml->asXML();
  $xml->asXML('MessageNew.xml');

 

内容参考:《PHPER》乔聪的使用simpleXML处理XML文件。

未完待续

 

阅读(2104) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:winxp开机自动打开系统目录处理

给主人留下些什么吧!~~