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 快速生成 Flash 动画的方法
Mar 06 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
php5 图片验证码实现代码
Dec 11 PHP
PHP安全性漫谈
Jun 28 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 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 批量删除 sql语句
2009/06/05 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
给领导的致歉信范文
2014/01/13 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
2014年质检员工作总结
2014/11/18 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
辩护词格式
2015/05/22 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
解析Redis Cluster原理
2021/06/21 Redis
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js