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.MVC的模板标签系统(一)
Sep 05 PHP
php类
Nov 27 PHP
PHP 变量类型的强制转换
Oct 23 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
is_file和file_exists效率比较
Mar 14 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
分享PHP header函数使用教程
2013/09/05 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
jquery清空表单数据示例分享
2014/02/13 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
Vue 中axios配置实例详解
2018/07/27 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
Python过滤列表用法实例分析
2016/04/29 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python装饰器的特性原理详解
2019/12/25 Python
如何进行Linux分区优化
2016/09/13 面试题
前台文员岗位职责及工作流程
2013/11/19 职场文书
市场部管理制度
2014/02/02 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
合伙经营协议书范本
2014/04/18 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python