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 相关文章推荐
一个程序下载的管理程序(三)
Oct 09 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
php flush类输出缓冲剖析
Oct 19 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
php ios推送(代码)
Jul 01 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php使用curl访问https示例分享
Jan 17 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
php微信支付之APP支付方法
Mar 04 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 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
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
js+css实现打字效果
2020/06/24 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
简述数组与指针的区别
2014/01/02 面试题
员工培训邀请函
2014/02/02 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
手术室护士个人总结
2015/02/13 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
redis 查看所有的key方式
2021/05/07 Redis
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫