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.ini中文版
Oct 09 PHP
配置最新的PHP加MYSQL服务器
Oct 09 PHP
输出控制类
Oct 09 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
PHP使用数组实现队列
Feb 05 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
php判断linux下程序问题实例
Jul 09 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
YII框架行为behaviors用法示例
Apr 26 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 身份验证方面的函数
2009/10/11 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中自定义函数的教程
2015/04/27 Python
在双python下设置python3为默认的方法
2018/10/31 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python动态进度条的实现代码
2019/07/03 Python
django使用admin站点上传图片的实例
2019/07/28 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
python给list排序的简单方法
2020/12/10 Python
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
法律工作求职自荐信
2013/10/31 职场文书
小学语文教学反思
2014/02/10 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
人工作失职检讨书
2015/05/05 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
2015年教师节主持词
2015/07/03 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android