当前位置 : IT培训网 > PHP开发 > php教程 > php教程之PHP XML Expat 解析器

php教程之PHP XML Expat 解析器

时间:2016-12-06 15:12:29  来源:php培训网  作者:郑州IT培训网  已有:名学员访问该课程
勤学如春起之苗,不见其长,日有所增,想要成为一个合格的php开发工程师,大家还要继续努力呀。

今天,IT培训网小编要和大家分享的是php教程之PHP XML Expat 解析器。

内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能。

XML 是什么?

XML 用于描述数据,其焦点是数据是什么。XML 文件描述了数据的结构。

在 XML 中,没有预定义的标签。您必须定义自己的标签。

如需学习更多关于 XML 的知识,请访问我们的 XML 教程。

Expat 是什么?

如需读取和更新 - 创建和处理 - 一个 XML 文档,您需要 XML 解析器。

有两种基本的 XML 解析器类型:

基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了对树中元素的访问,例如文档对象模型 (DOM)。

基于事件的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。

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

基于事件的解析器集中在 XML 文档的内容,而不是它们的结构。正因为如此,基于事件的解析器能够比基于树的解析器更快地访问数据。

请看下面的 XML 片段:

<from>Jani</from>

基于事件的解析器把上面的 XML 报告为一连串的三个事件:

开始元素:from

开始 CDATA 部分,值:Jani

关闭元素:from

上面的 XML 实例包含了形式良好的 XML。不过这个实例是无效的 XML,因为没有与它关联的文档类型声明 (DTD)。

然而,在使用 Expat 解析器时,这没有区别。Expat 是不检查有效性的解析器,忽略任何 DTD。

作为一款基于事件、非验证的 XML 解析器,Expat 快速且轻巧,十分适合 PHP 的 Web 应用程序。

注释:XML 文档必须形式良好,否则 Expat 会生成错误。

安装

XML Expat 解析器函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。

XML 文件

下面的 XML 文件将应用在我们的实例中:

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

初始化 XML 解析器

我们要在 PHP 中初始化 XML 解析器,为不同的 XML 事件定义处理器,然后解析这个 XML 文件。

实例

<?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,4096))

{

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)));

}

//Free the XML parser

xml_parser_free($parser);

?>

以上代码将输出:

-- Note --

To: Tove

From: Jani

Heading: Reminder

Message: Don't forget me this weekend!

工作原理:

通过 xml_parser_create() 函数初始化 XML 解析器

创建配合不同事件处理程序的的函数

添加 xml_set_element_handler() 函数来定义,当解析器遇到开始和结束标签时执行哪个函数

添加 xml_set_character_data_handler() 函数来定义,当解析器遇到字符数据时执行哪个函数

通过 xml_parse() 函数来解析文件 "test.xml"

万一有错误的话,添加 xml_error_string() 函数把 XML 错误转换为文本说明

调用 xml_parser_free() 函数来释放分配给 xml_parser_create() 函数的内存

勤学如春起之苗,不见其长,日有所增,想要成为一个合格的php开发工程师,大家还要继续努力呀。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
PHP 教程
1、PHP 基础
1.1 PHP 简介
1.2 PHP 安装
1.3 PHP 语法
1.4 PHP 变量
1.5 PHP echo/print
1.6 PHP 数据类型
1.7 PHP 常量
1.8 PHP 字符串
1.9 PHP 运算符
1.10 PHP If...Else
1.11 PHP Switch
1.12 PHP 数组
1.13 PHP 数组排序
1.14 PHP 超级全局变量
1.15 PHP While 循环
1.16 PHP For 循环
1.17 PHP 函数
1.18 PHP 魔术变量
1.19 PHP 命名空间
1.20 PHP 面向对象
2、PHP 表单
2.1 PHP 表单
2.2 PHP 表单验证
2.3 PHP 表单 - 必需字段
2.4 PHP 表单 - 验证邮件和URL
2.5 PHP 完整表单实例
2.6 PHP $_GET 变量
2.7 PHP $_POST 变量
3、PHP 高级教程
3.1 PHP 多维数组
3.2 PHP 日期
3.3 PHP 包含
3.4 PHP 文件
3.5 PHP 文件上传
3.6 PHP Cookie
3.7 PHP Session
3.8 PHP E-mail
3.9 PHP 安全 E-mail
3.10 PHP Error
3.11 PHP 过滤器
3.12 PHP 高级过滤器
3.13 PHP JSON
4、PHP 7 新特性
4.1 PHP 7 新特性
5、PHP 数据库
5.1 PHP MySQL 简介
5.2 PHP MySQL 连接
5.3 PHP MySQL 创建数据库
5.4 PHP MySQL 创建数据表
5.5 PHP MySQL 插入数据
5.6 PHP MySQL 插入多条数据
5.7 PHP MySQL 预处理语句
5.8 PHP MySQL 读取数据
5.9 PHP MySQL Where
5.10 PHP MySQL Order By
5.11 PHP MySQL Update
5.12 PHP MySQL Delete
5.13 PHP ODBC
6、PHP XML
6.1 XML Expat Parser
6.2 XML DOM
6.3 XML SimpleXML
7、PHP 与 AJAX
7.1 AJAX 简介
7.2 AJAX 与PHP
7.3 AJAX 数据库
7.4 AJAX XML
7.5 AJAX 实时搜索
7.6 AJAX RSS Reader
7.7 AJAX 投票