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通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
PHP线程的内存回收问题
Jul 08 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
详细解读php的命名空间(一)
Feb 21 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 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/12/28 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
Python中编写ORM框架的入门指引
2015/04/29 Python
python操作sqlite的CRUD实例分析
2015/05/08 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
python解析xml简单示例
2019/06/21 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
学习党课思想汇报
2013/12/29 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
图神经网络GNN算法
2022/05/11 Python