PHP基于XMLWriter操作xml的方法分析


Posted in PHP onJuly 17, 2017

本文实例讲述了PHP基于XMLWriter操作xml的方法。分享给大家供大家参考,具体如下:

接着昨天的这次再来学习一种读写xml的方式,这种方式主要围绕XMLWriter和XMLReader进行。前者用于生成xml,后者则是用来读取并解析xml.废话不多说一起来看看吧

1. 生成xml文件或字符串

<?php
 header("Content-type: text/html; charset=utf-8");
 $xml=new XMLWriter();
 //$xml->openUri("php://output");
 //设置输出,如果不需要保存成文件则使用上面被注释掉那句
 $xml->openUri("stu2.xml");
 //设置缩进字符串,这里设置为空串(这句和下面的setIntent也可以不要)
 $xml->setIndentString('');
 $xml->setIndent(true);
 //xml文档开始
 $xml->startDocument('1.0', 'utf-8');
 //创建根节点
 $xml->startElement("StudentInfo");
 $xml->startElement("Item");
 //添加属性
 $xml->writeAttribute("type","1");
 $xml->startElement("id");
 $xml->text("01");
 $xml->endElement();
 $xml->startElement("name");
 $xml->text("刘惜君");
 $xml->endElement();
 $xml->endElement();
 $xml->endElement();
 $xml->endDocument();
 //header("Content-type: text/xml");
 //取得缓冲区里的xml字符串
 //echo $xml->outputMemory();
?>

这种方式的特点是每个标签结束后需要一个endElement,xml拼接好后需要把文档结束掉。有一种“层层包裹”的感觉

2. 解析xml

<?php
 header("Content-type: text/html; charset=utf-8");
 $xml=new XMLReader();
//载入xml文件,如果是字符串直接使用xml方法
 $xml->open("student.xml");
//开始读取xml
 while($xml->read()){
   //根据节点类型和元素名称取得文本节点或属性
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'item') {
     print $xml->getAttribute("id") . "</br>";
   }
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'name') {
     //移动指针到下一个节点
     $xml->read();
     //取得文本节点的值
     print $xml->value."</br>";
  }
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'age') {
     $xml->read();
     print $xml->value."</br>";
  }
 }
?>

这种解析xml的方式比较高效,如果有的地方看不懂建议查阅下PHP开发手册

被解析的文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<UsersInfo><item id="01"><name>冯绍峰</name><age>30</age></item><item id="02"><name>潘玮柏</name><age>29</age></item></UsersInfo>

下面是解析出来的结果

PHP基于XMLWriter操作xml的方法分析

PHP 相关文章推荐
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
PHP速成大法
Jan 30 PHP
PHP生成plist数据的方法
Jun 16 PHP
PHP 无限级分类
May 04 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
Laravel中10个有用的用法小结
May 06 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 #PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 #PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 #PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 #PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 #PHP
PHPstorm快捷键(分享)
Jul 17 #PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
Jul 16 #PHP
You might like
php中++i 与 i++ 的区别
2012/08/08 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
vue2 前端搜索实现示例
2018/02/26 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python实现五子棋游戏
2019/06/18 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
美国翻新电子产品商店:The Store
2019/10/08 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
法律进企业活动方案
2014/03/04 职场文书
大学新生入学教育方案
2014/05/16 职场文书
服装设计师求职信
2014/06/04 职场文书
2014年客房部工作总结
2014/11/22 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
雾霾停课通知
2015/04/24 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
python自动化测试之Selenium详解
2022/03/13 Python