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 相关文章推荐
ADODB的数据库封包程序库
Dec 31 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
PHP中的流(streams)浅析
Jul 02 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
php设计模式之装饰模式应用案例详解
Jun 17 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邮件类
2007/01/03 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
python发布模块的步骤分享
2014/02/21 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
python实现二分查找算法
2017/09/21 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python常见数字运算操作实例小结
2019/03/22 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
单位未婚证明范本
2014/11/25 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
小学安全教育主题班会
2015/08/12 职场文书
小学主题班会教案
2015/08/17 职场文书
python如何做代码性能分析
2021/04/26 Python
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
MySQL的Query Cache图文详解
2021/07/01 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL