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 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
php5中类的学习
Mar 28 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php程序效率优化的一些策略小结
Jul 17 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
php中使用GD库做验证码
Mar 31 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 PHP
imagettftext() 失效,不起作用
Mar 09 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中的cookie
2006/11/26 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
JS 图片缩放效果代码
2010/06/09 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
再谈javascript原型继承
2014/11/10 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
node.js实现快速截图
2016/08/27 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
详解如何较好的使用js
2016/12/16 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
Python线程的两种编程方式
2015/04/14 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
对python中return与yield的区别详解
2020/03/12 Python
python中字符串的编码与解码详析
2020/12/03 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
计算机应用与科学个人的自我评价
2013/11/15 职场文书
实习自我鉴定
2013/12/15 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
活动邀请函范文
2014/01/19 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
功夫熊猫观后感
2015/06/10 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Python中递归以及递归遍历目录详解
2021/10/24 Python