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 相关文章推荐
第五节--克隆
Nov 16 PHP
PHP音乐采集(部分代码)
Feb 14 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
PHP 正则表达式小结
Feb 12 PHP
简单谈谈favicon
Jun 10 PHP
php判断表是否存在的方法
Jun 18 PHP
php猜单词游戏
Sep 29 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 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实现XSS安全过滤的方法
2015/07/29 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Python创建字典的八种方式
2019/02/27 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
Python偏函数实现原理及应用
2020/11/20 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
爱与责任演讲稿
2014/05/20 职场文书
品质保证书格式
2015/02/28 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
廉政承诺书2015
2015/04/28 职场文书
全国助残日活动总结
2015/05/11 职场文书
认识实习感想
2015/08/10 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB