目录
一、概述及安装
二、事件处理器
三、大写转换
四、错误代码
五、字符编码
首页 后端开发 XML/RSS教程 PHP扩展之XML操作(二)——XML解析器安装及概述

PHP扩展之XML操作(二)——XML解析器安装及概述

Feb 13, 2017 pm 02:53 PM
php扩展 解析器



一、概述及安装

XML(可扩展标记语言,eXtensible Markup Language) 是一种在互联网上用于结构化文档交互的数据格式。 它是互联网协会(W3C)定义的一个标准。与 XML 及其相关技术的信息可访问http://www.php.cn/。

此 PHP 扩展实现 支持 James Clark 使用 PHP 编写的 expat。 此工具包可解析(但不能验证) XML 文档。它支持 PHP 所提供的 3 种字符编码: US-ASCII, ISO-8859-1 和 UTF-8。 不支持 UTF-16。

此扩展可 创建 XML 解析器 并为不同的 XML 事件定义 处理程序(handler)。 每个 XML 解析器还存在少数可以调节的参数。

此扩展需要 libxml PHP 扩展。这表示需要使用 --enable-libxml ,尽管这将隐式完成因为 libxml 是缺省开启的。

缺省情况下,此扩展使用expat compat layer 。也可使用expat, 此库位于 http://www.php.cn/。 使用expat库中的 Makefile 是不会默认构建出库文件的,可使用以下构建规则进行构建:


libexpat.a: $(OBJS)
    ar -rc $@ $(OBJS)
    ranlib $@
登录后复制

expat 的源代码 RPM 安装包可在 http://www.php.cn/ 找到。

此扩展默认为启用,编译时可通过下列选项禁用: --disable-xml

这些函数默认为有效的,使用了捆绑的 expat 库。您可以通过参数 --disable-xml 来屏蔽 XML 的支持。如果您将 PHP 编译为 Apache 1.3.9 或更高版本的一个模块, PHP 将自动使用 Apache 捆绑的 expat 库。如果您不希望使用该捆绑的 expat 库,请在运行 PHP 的 configure 配置脚本时使用参数 --with-expat-dir=DIR ,其中 DIR 应该指向 expat 安装的根目录。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

二、事件处理器

XML 事件处理器的定义如下:

被支持的 XML 处理器
PHP 处理器函数 事件描述
xml_set_element_handler() 当 XML 解析器遇到开始或结束标签时,会触发元素事件。 开始标签和结束标签有不同的处理器。
xml_set_character_data_handler() 字符数据范指 XML 文档中所有非标记的内容,包括标签之间的空格。 注意,XML 解析器不会添加或删除任何空格,由应用程序(你)来判断空格是否有意义。
xml_set_processing_instruction_handler() PHP 程序员必须熟练掌握处理指令(PI)。是处理指令, 其中php被称为“处理指令对象”。 除所有以“XML”开头的处理指令对象是系统保留的外, 其他的处理函数均是由应用程序指定的。
xml_set_default_handler() 不执行其他处理函数,则会执行缺省的处理函数。 在缺省的处理函数中可取得如 XML 和文档类型声明等信息。
xml_set_unparsed_entity_decl_handler() 未解析的实体声明(NDATA)会调用此处理函数。
xml_set_notation_decl_handler() 符号声明会调用此处理函数
xml_set_external_entity_ref_handler() 当 XML 解析器发现对外部已解析的普通实体的引用时, 会调用此处理函数。例如,引用一个文件或URL。实例可参见 XML 外部实体例程。

三、大写转换

元素处理函数可取得元素名称转换为 case-folded(大写字母)形式。 Case-folding 被定义为“将非大写字母替换为相对应的大写字母的字符串操作”。换句话说,在 XML 中,case-folding 就是转换为大写。

默认情况下,所有的通过处理函数的元素名都被转换为大写字母。每个 XML 解析器可分别通过 xml_parser_get_option()与xml_parser_set_option()函数来查询与控制此项功能。

四、错误代码

下列常量是 XML 相关的错误代码( xml_parse()函数的返回值):

  • XML_ERROR_NONE

  • XML_ERROR_NO_MEMORY

  • XML_ERROR_SYNTAX

  • XML_ERROR_NO_ELEMENTS

  • XML_ERROR_INVALID_TOKEN

  • XML_ERROR_UNCLOSED_TOKEN

  • XML_ERROR_PARTIAL_CHAR

  • XML_ERROR_TAG_MISMATCH

  • XML_ERROR_DUPLICATE_ATTRIBUTE

  • XML_ERROR_JUNK_AFTER_DOC_ELEMENT

  • XML_ERROR_PARAM_ENTITY_REF

  • XML_ERROR_UNDEFINED_ENTITY

  • XML_ERROR_RECURSIVE_ENTITY_REF

  • XML_ERROR_ASYNC_ENTITY

  • XML_ERROR_BAD_CHAR_REF

  • XML_ERROR_BINARY_ENTITY_REF

  • XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF

  • XML_ERROR_MISPLACED_XML_PI

  • XML_ERROR_UNKNOWN_ENCODING

  • XML_ERROR_INCORRECT_ENCODING

  • XML_ERROR_UNCLOSED_CDATA_SECTION

  • XML_ERROR_EXTERNAL_ENTITY_HANDLING

五、字符编码

PHP 的 XML 扩展通过几种不同的字符编码支持Unicode 字符集。 有两类字符编码, 原始编码 和 目标编码. 在PHP的内部展现中,文档始终是使用UTF-8编码。

当 XML 被 解析 后,原始编码就完成了。 在创建 XML 解析器时, 可以指定原始编码(在XML 解析器此后的生命周期里,不能修改此编码)。 被支持的原始编码有 ISO-8859-1, US-ASCII 和 UTF-8. 前两种是单字节编码, 即每一个字符表现为一个字节。 UTF-8 可将字符编码为一串不定数量(最高21)的位(bit), 排列成1到4个字节。 PHP 中使用的默认原始编码是ISO-8859-1.

当 PHP 将数据传给 XML 处理函数时,目标编码就完成了。 在创建 XML 处理器时,目标编码被设定为与原始编码相同,但可任意修改。 目标编码会影响字符数据及标签名,与处理指令目标。

如 XML 解析器遇到原始编码所能表示的范围之外的字符时,会返回一个错误。

如 PHP 遇到在被解析的 XML 文档中不能用所指定的目标编码表示的字符时, 这个问题字符会被“降级”。通常来说,就是那些字符会被替换成问号(?)。

以上就是PHP扩展之XML操作(二)——XML解析器安装及概述的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何查看php用了哪些扩展 如何查看php用了哪些扩展 Aug 01, 2023 pm 04:13 PM

查看phpinfo()函数输出、使用命令行工具和检查PHP配置文件均可以查看php用了哪些扩展。1、查看phpinfo()函数输出,创建一个简单的PHP脚本,将这个脚本保存为phpinfo.php,并将其上传到您的Web服务器,在浏览器中访问此文件,使用浏览器的搜索功能,在页面中查找关键字"extension"或"extension_loaded",以找到有关扩展的信息即可。

什么是mdi文件? 什么是mdi文件? Feb 18, 2024 pm 01:13 PM

MDI文件是一种常见的电子文档格式,全称为MicrosoftDocumentImaging。它是由微软公司开发的一种用于存储和显示扫描文档的文件格式。MDI文件允许用户将纸质文档扫描成数字图像,并通过计算机进行浏览、编辑和打印。MDI文件具有许多优点,首先是其高度可压缩性。MDI文件可以将扫描的图像以最小的文件大小保存,这对于存储和传输文档非常有利。其次

如何使用php扩展PDO连接Oracle数据库 如何使用php扩展PDO连接Oracle数据库 Jul 29, 2023 pm 07:21 PM

如何使用PHP扩展PDO连接Oracle数据库导语:PHP是一种非常流行的服务器端编程语言,而Oracle是一款常用的关系型数据库管理系统。本文将介绍如何使用PHP扩展PDO(PHPDataObjects)来连接Oracle数据库。一、安装PDO_OCI扩展要连接Oracle数据库,首先需要安装PDO_OCI扩展。以下是安装PDO_OCI扩展的步骤:确保

如何使用PHP扩展SuiteCRM的报告生成功能 如何使用PHP扩展SuiteCRM的报告生成功能 Jul 19, 2023 am 10:27 AM

如何使用PHP扩展SuiteCRM的报告生成功能SuiteCRM是一款功能强大的开源CRM系统,它提供了丰富的功能来帮助企业管理客户关系。其中一个重要的功能就是报告生成,使用报告可以帮助企业更好地了解业务情况,并作出正确的决策。本文将介绍如何使用PHP扩展SuiteCRM的报告生成功能,并提供相关的代码示例。在开始之前,需要确保已经安装好了SuiteCRM,

PHP入门指南:PHP扩展安装 PHP入门指南:PHP扩展安装 May 20, 2023 am 08:49 AM

在使用PHP进行开发时,我们可能需要使用一些PHP扩展。这些扩展可以为我们提供更多的功能和工具,使我们的开发工作更加高效和便捷。但在使用这些扩展之前,我们需要先进行安装。本篇文章将为您介绍PHP扩展的安装方法。一、什么是PHP扩展?PHP扩展是指为PHP编程语言提供额外功能和服务的组件。这些组件可以通过PHP的扩展机制进行安装和使用。PHP扩展可以帮助我们处

php如何使用PHP的geoip扩展? php如何使用PHP的geoip扩展? Jun 01, 2023 am 09:13 AM

PHP是一种流行的服务器端脚本语言,它可以处理网页上的动态内容。PHP的geoip扩展可以让你在PHP中获取有关用户位置的信息。在本文中,我们将介绍如何使用PHP的geoip扩展。什么是PHP的GeoIP扩展?PHP的geoip扩展是一个免费的、开源的扩展,它允许你获取有关IP地址和位置信息的数据。该扩展可以与GeoIP数据库一起使用,这是一个由MaxMin

宝塔面板的PHP扩展和PHP版本管理 宝塔面板的PHP扩展和PHP版本管理 Jun 21, 2023 am 08:49 AM

宝塔面板是一款开源的服务器管理面板,在为网站运营者提供便捷的网站管理、数据库管理、SSL证书管理等服务的同时,还提供了强大的PHP扩展和PHP版本管理功能,让服务器管理变得更加简单和高效。一、PHP扩展PHP扩展是一种用来增强PHP功能的模块,通过安装PHP扩展可以实现更多的功能和服务,比如:加速器:加速器可以显著地提高PHP性能,通过缓存PHP脚本,减轻服

PHP扩展开发深度探索:揭开PHP扩展开发的幕后秘密 PHP扩展开发深度探索:揭开PHP扩展开发的幕后秘密 Feb 19, 2024 pm 11:40 PM

PHP扩展开发是创建自定义功能、扩展php核心功能并构建更强大的应用程序的艺术。它为PHP世界开辟了新的可能性,允许开发人员超越语言的基本限制。本文将带您踏上PHP扩展开发的旅程,从基础概念到高级技巧,为您提供全面的知识和实践指南。PHP扩展开发基础在开始PHP扩展开发之前,您需要了解一些基础概念。什么是PHP扩展?PHP扩展是一种动态链接库(DLL),它可以扩展PHP核心功能,提供新的数据类型、函数和类。PHP扩展的优点PHP扩展具有许多优点,包括:可扩展性、灵活性、性能优化和代码重用。PHP

See all articles