PHP使用XMLWriter读写xml文件操作详解


Posted in PHP onJuly 31, 2018

本文实例讲述了PHP使用XMLWriter读写xml文件操作。分享给大家供大家参考,具体如下:

米扑科技旗下的多个产品,需要脚本自动生成sitemap.xml,于是重新温习一遍PHP XML读写操作。

读写xml的方式,主要围绕XMLWriterXMLReader进行,前者用于生成xml,后者则是用来读取并解析xml

写入 xml

test_xml_write.php

<?php
/**
 * mimvp.com
 * 2017.06.22
 */
header("Content-type: text/html; charset=utf-8");
$xml = new XMLWriter();
$xml->openUri("php://output");  // 输出到网页控制台
$xml->openUri("mimvp.xml");   // 输出到文件,需要读写权限,推荐 chmod 766 mimvp.xml
// 设置缩进字符串
$xml->setIndentString("\t");
$xml->setIndent(true);
// xml文档开始
$xml->startDocument('1.0', 'utf-8');
// 创建根节点
$xml->startElement("MimvpInfo");
  // 节点1
  $xml->startElement("Item");
    $xml->writeAttribute("info","1");  // 属性
      $xml->startElement("id");
      $xml->text("01");
      $xml->endElement();
      $xml->startElement("name");
      $xml->text("米扑代理");
      $xml->endElement();
  $xml->endElement();
  // 节点2
  $xml->startElement("Item");
    $xml->writeAttribute("info","1");  // 属性
      $xml->startElement("id");
      $xml->text("02");
      $xml->endElement();
      $xml->startElement("name");
      $xml->text("米扑财富");
      $xml->endElement();
  $xml->endElement();
$xml->endElement();
$xml->endDocument();
//header("Content-type: text/xml");
//取得缓冲区里的xml字符串
//echo $xml->outputMemory();
?>

输出mimvp.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<MimvpInfo>
  <Item info="1">
    <id>01</id>
    <name>米扑代理</name>
  </Item>
  <Item info="1">
    <id>02</id>
    <name>米扑财富</name>
  </Item>
</MimvpInfo>

注意:

1. 新建mimvp.xml 文件:

touch mimvp.xml

2. 授权mimvp.xml 文件:

chmod 766 mimvp.xml

读取 xml

test_xml_read.php

<?php
/**
 * mimvp.com
 * 2017.06.22
 */
header ( "Content-type: text/html; charset=utf-8" );
$xml = new XMLReader ();
// 载入xml文件,如果是字符串直接使用xml方法
$xml->open ( "mimvp.xml" );
// 开始读取xml
while ( $xml->read () ) {
  // 根据节点类型和元素名称取得文本节点或属性
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'item') {
    print $xml->getAttribute ( "info" ) . "</br>";
  }
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'id') {
    $xml->read ();  // 移动指针到下一个节点
    print $xml->value . "\t";
  }
  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>";
  }
}
?>

输出结果:

01 米扑代理
02 米扑财富

源代码及应用

请见米扑科技的Github: https://github.com/mimvp/sitemap-php

还可点击此处本站下载

PHP 相关文章推荐
php自动获取目录下的模板的代码
Aug 08 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 PHP
Zend Studio使用技巧两则
Apr 01 PHP
Yii多表联合查询操作详解
Jun 02 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
php-fpm添加service服务的例子
Apr 27 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 #PHP
PHP常用日期加减计算方法实例小结
Jul 31 #PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 #PHP
PHP笛卡尔积实现算法示例
Jul 30 #PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 #PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 #PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 #PHP
You might like
PHP过滤黑名单关键字的方法
2014/12/01 PHP
php筛选不存在的图片资源
2015/04/28 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
js实现简易计算器功能
2019/10/18 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
深入浅析Python传值与传址
2018/07/10 Python
python处理document文档保留原样式
2019/09/23 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
Python datetime 如何处理时区信息
2020/09/02 Python
高分子材料个人求职信范文
2013/09/25 职场文书
英语自荐信常用语句
2013/12/13 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
社区节水倡议书
2015/04/29 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
go goroutine 怎样进行错误处理
2021/07/16 Golang
Python基本数据类型之字符串str
2021/07/21 Python
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js
利用Python实现模拟登录知乎
2022/05/25 Python