千家信息网

PHP扩展之XML解析器安装的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍PHP扩展之XML解析器安装的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、概述及安装XML(可扩展标记语言,eXtensible Markup L
千家信息网最后更新 2026年11月01日PHP扩展之XML解析器安装的示例分析

这篇文章主要介绍PHP扩展之XML解析器安装的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、概述及安装

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解析器安装的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

处理 编码 函数 字符 支持 原始 处理器 大写 文档 目标 事件 指令 元素 大写字母 字母 数据 标签 程序 不同 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 涨乐互联网科技 互联网科技会 世界互联网领先科技成果 九亚互联网科技 互联网科技上市公司 江苏南京365互联网科技 南平创想时代互联网科技有限公司 语蝶互联网科技有限公司 健康食品互联网创新科技园项目 互联网公司黑科技创始人 互联网科技和法律行业 黑科技 体验场景 互联网大会 智帮互联网科技公司最近动向 江苏苏星互联网科技有限公司 互联网营销推广黑科技 本届互联网大会上的黑科技 西安左小互联网科技有限公司 互联网科技创新方面的资料 恒生科技互联网指数十大成分股 互联网科技有限公司 互联网是第几次科技革命的成果 广州紫鲸互联网科技有限公司 盈实互联网科技 互联网与科技金融数据 互联网科技宣传片 互联网科技公司名称 宝灵互联网科技有限公司 语蝶互联网科技有限公司 晓花互联网科技有限公司网址
0