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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
Jun 06 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
php+ajax实现文件切割上传功能示例
Mar 03 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创建动态图像
2006/10/09 PHP
mysq GBKl乱码
2006/11/28 PHP
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
php链表用法实例分析
2015/07/09 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
php桥接模式应用案例分析
2019/10/23 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python计算字符宽度的方法
2016/06/14 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
自我鉴定思想方面
2013/10/07 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android