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中的日期处理方法集锦
Jan 02 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
浅析PHP中的闭包和匿名函数
Dec 25 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
YB217、YB235、YB400浅听
2021/03/02 无线电
php+javascript的日历控件
2009/11/19 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
详解React中的组件通信问题
2017/07/31 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
vue实现微信分享功能
2018/11/28 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
外贸专业求职信
2014/03/09 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
实习指导老师意见
2015/06/04 职场文书
西游记读书笔记
2015/06/25 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript