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 07 PHP
有关php运算符的知识大全
Nov 03 PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 PHP
PHP中的use关键字概述
Jul 23 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
Oct 18 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 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实现网上点歌(二)
2006/10/09 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python基础中所出现的异常报错总结
2016/11/19 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
python实现微信防撤回神器
2019/04/29 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Python中的With语句的使用及原理
2020/07/29 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
Servlet的生命周期
2013/08/25 面试题
2014年行政人事工作总结
2014/12/09 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
python自动化测试之Selenium详解
2022/03/13 Python
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers