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 相关文章推荐
输出控制类
Oct 09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
php操作mongoDB实例分析
Dec 29 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
WordPress中is_singular()函数简介
Feb 05 PHP
PHP实现的观察者模式实例
Jun 21 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 PHP
浅谈PHP7中的一些小技巧
May 29 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代码在网页上生成图片
2015/07/01 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
架构师岗位职责
2013/11/18 职场文书
庆国庆活动总结
2014/08/28 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
道歉短信大全
2015/05/12 职场文书
法定代表人资格证明书
2015/06/18 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Python3接口性能测试实例代码
2021/06/20 Python