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 类相关函数的使用详解
May 10 PHP
php共享内存段示例分享
Jan 20 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
合格的PHP程序员必备技能
Nov 13 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
人大复印资料处理程序_输入篇
2006/10/09 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python安装scipy的步骤解析
2019/09/28 Python
python字典的值可以修改吗
2020/06/29 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
高一数学教学反思
2014/02/07 职场文书
汽车广告策划方案
2014/05/31 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
实习单位意见
2015/06/04 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书