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环境――Appserv
Dec 13 PHP
php中常用编辑器推荐
Jan 02 PHP
关于php fread()使用技巧
Jan 22 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 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
使用图灵api创建微信聊天机器人
2015/07/23 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python OS模块常用函数说明
2015/05/23 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python socket实现简单聊天室
2018/04/01 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
python实现猜拳游戏项目
2020/11/30 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
写求职信有什么意义
2014/02/17 职场文书
离婚协议书范本2014
2014/10/27 职场文书
小学班主任个人总结
2015/03/03 职场文书
求职意向书范本
2015/05/11 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
财务人员入职担保书
2015/09/22 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
python之json文件转xml文件案例讲解
2021/08/07 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL