php 使用expat方式解析xml文件操作示例


Posted in PHP onNovember 26, 2019

本文实例讲述了php 使用expat方式解析xml文件操作。分享给大家供大家参考,具体如下:

test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<notes>
 <note>
 <to>George</to>
 <from>John</from>
 <heading>Reminder</heading>
 <body>Don't forget the meeting!</body>
 </note>
 <note>
 <to>George2</to>
 <from>John2</from>
 <heading>Reminder2</heading>
 <body>Don't forget the meeting!2</body>
 </note>
 <instances>
 <instance st="192.168.234.121" />
 <instance st="192.168.234.28" />
 </instances>
</notes>

PHP文件:

<?php
// Initialize the XML parser
$parser = xml_parser_create();
// Function to use at the start of an element
function start($parser, $element_name, $element_attrs)
{
  switch ($element_name) {
    case "NOTE":
      echo "-- Note --<br />";
      break;
    case "TO":
      echo "To: ";
      break;
    case "FROM":
      echo "From: ";
      break;
    case "HEADING":
      echo "Heading: ";
      break;
    case "BODY":
      echo "Message: ";
  }
}
// Function to use at the end of an element
function stop($parser, $element_name)
{
  echo "<br />";
}
// Function to use when finding character data
function char($parser, $data)
{
  echo $data;
}
// Specify element handler
xml_set_element_handler($parser, "start", "stop");
// Specify data handler
xml_set_character_data_handler($parser, "char");
// Open XML file
// $fp = fopen("test.xml", "r");
// Read data
// while ($data = fread($fp, 10)) {
// xml_parse($parser, $data, feof($fp)) or die(sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
// }
// fclose($fp);
$data = file_get_contents("test.xml");
xml_parse($parser, $data) or die(sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
// Free the XML parser
xml_parser_free($parser);
?>

运行结果:

-- Note --
To: George
From: John
Heading: Reminder
Message: Don't forget the meeting!

-- Note --
To: George2
From: John2
Heading: Reminder2
Message: Don't forget the meeting!2

PHP 相关文章推荐
PHP cron中的批处理
Sep 16 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
php实现的日历程序
Jun 18 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
php cli模式下获取参数的方法
May 05 PHP
基于laravel Request的所有方法详解
Sep 29 PHP
thinkphp框架类库扩展操作示例
Nov 26 #PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 #PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 #PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 #PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 #PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 #PHP
使用Git实现Laravel项目的自动化部署
Nov 24 #PHP
You might like
点评山进PR-D3L三波段收音机
2021/03/02 无线电
用Flash图形化数据(二)
2006/10/09 PHP
使用 MySQL Date/Time 类型
2008/03/26 PHP
五个PHP程序员工具
2008/05/26 PHP
php加密解密实用类分享
2014/01/07 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
Vue响应式原理详解
2017/04/18 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
Python装饰器原理与用法分析
2018/04/30 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
python3注册全局热键的实现
2020/03/22 Python
详解python tcp编程
2020/08/24 Python
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
单位人事专员介绍信
2014/01/11 职场文书
二年级数学教学反思
2014/01/21 职场文书
年度考核自我鉴定
2014/02/02 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
党支部季度考核意见
2015/06/02 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers