PHP课程

浏览13598
更新时间2025-08-06

XML Expat 解析器

Expat 解析器是一个基于事件的解析器。

请看以下的 XML 片段:

<from>Jani</from>

一个基于事件的解析器会将上述 XML 报告为一系列三个事件:

  • 开始元素:from
  • 开始 CDATA 部分,值:Jani
  • 关闭元素:from

XML Expat 解析器函数是 PHP 核心的一部分。使用这些函数无需安装。

XML 文件

在下面的例子中将使用 XML 文件 "note.xml":

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

初始化 XML Expat 解析器

我们希望在PHP中初始化 XML Expat 解析器,为不同的 XML 事件定义一些处理程序,然后解析 XML 文件。

实例

<?php
// 初始化 XML 解析器
$parser=xml_parser_create();

// 在元素开始时使用的函数
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 stop($parser,$element_name) {
  echo "<br>";
}

// 在找到字符数据时使用的函数
function char($parser,$data) {
  echo $data;
}

// 指定元素处理程序
xml_set_element_handler($parser,"start","stop");

// 指定数据处理程序
xml_set_character_data_handler($parser,"char");

// 打开 XML 文件
$fp=fopen("note.xml","r");

// 读取数据
while ($data=fread($fp,4096)) {
  xml_parse($parser,$data,feof($fp)) or
  die (sprintf("XML 错误:%s at line %d",
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}

// 释放 XML 解析器
xml_parser_free($parser);
?>

运行实例

例子解释:

  • 使用 xml_parser_create() 函数初始化 XML 解析器
  • 创建与不同事件处理程序一起使用的函数
  • 添加 xml_set_element_handler() 函数,以指定解析器在遇到开始和结束标记时将执行哪个函数
  • 添加 xml_set_character_data_handler() 函数,以指定解析器在遇到字符数据时将执行哪个函数
  • 使用 xml_parse() 函数解析 "note.xml" 文件
  • 如果出现错误,请添加 xml_error_string() 函数以将 XML 错误转换为文本描述
  • 调用 xml_parser_free() 函数,以释放使用 xml_parser_create() 函数分配的内存

PHP XML Expat 解析器参考手册

有关 PHP Expat 函数的更多信息,请访问我们的 PHP XML 解析器参考手册。

相关视频

更多

免费

php8,我来也
初级php8,我来也

34万次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

39.6万次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

31万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

64.9万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.2万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76.6万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.1万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.3万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.2万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

133.1万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载