设为首页 收藏本站
查看: 2203|回复: 0

[经验分享] php的simplexml-11030355

[复制链接]

尚未签到

发表于 2018-12-17 08:04:10 | 显示全部楼层 |阅读模式
  要处理XML 文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,
  对XML 文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM
  树,通过对DOM 树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,
  DOM 的处理过程相对烦琐,都不很适合新手的入门。
  PHP5 推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小
  巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也
  非常的简单。
  首先,它提供有简单的函数可以从XML 文档、字符串、或DOM 对象上直接构造出
  SimpleXMLElement 对象;其次,SimpleXMLElement 提供有简单的方法可以进行属性、子节
  点、和XPath 的操作;然而,SimpleXML 最简单的地方是,它提供有使用标准对象的属性和
  对象迭代器进行节点操作的方法,这一处理思路使得用PHP 对XML 文档的处理得到了极大
  的简化。
  2 SimpleXML 入门示例
  下面我们通过一些小的代码片段,稍微了解一下SimpleXML 的强大和简洁。为举例方便,
  我们使用一个Messages.xml 文件,里面包含这样一段XML 代码:
  Messages.xml
  复制代码代码如下:
  
  

  
  This is>  Here is Content
  2008-03-20 21:50:23

  
    
  
  这是一篇保存有留言信息的XML 文档,每条信息包括属性id,子节点title、content、time
  以及若干条对于它的回复信息,每条回复包括属性id 及回复的内容。
  用SimpleXML 处理并输出此XML 文档内容的过程以及方法如下。
  (1) 构造SimpleXMLElement 对象
  代码片断
  $xml = simplexml_load_file('Messages.xml');
  如果这段xml 已经被读入到一个字符串$messages 中,则可以使用如下语句:
  代码片断
  $xml = simplexml_load_string('Messages.xml');
  (2)输出留言1 的标题
  代码片断
  //可以使用属性的方式访问子节点,通过节点的标签名可直接得到节点的内容
  echo $xml->msg->title;
  (3)输出留言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.'';
  }
  (8)遍历留言1 所有的子节点
  代码片断
  //children 方法得到所有子节点
  foreach ($xml->msg->children() as $field){
  echo $field.'';
  }
  (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 函数包
  可以非常简单地实现如下:
  代码如下:
  复制代码代码如下:
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652206-1-1.html 上篇帖子: Github上的PHP资源汇总大全 下篇帖子: 解决php5.2与mysql兼容问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表