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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
用文本作数据处理
Oct 09 PHP
PHP 高手之路(一)
Oct 09 PHP
PHP+DBM的同学录程序(4)
Oct 09 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
laravel使用Faker数据填充的实现方法
Apr 12 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
建立动态的WML站点(一)
2006/10/09 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php ci框架验证码实例分析
2013/06/26 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
浅谈php自定义错误日志
2015/02/13 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
ant design实现圈选功能
2019/12/17 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Python安装第三方库的3种方法
2015/06/21 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
python实现支付宝转账接口
2019/05/07 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
党员违纪检讨书
2014/02/18 职场文书
群众路线个人整改方案
2014/10/25 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python