PHP 在 php.ini 设置文件中默认启用了 XML 解析器扩展。此解析器实现 SAX API,这是一种基于事件的解析算法。
基于事件的解析器不会在内存中加载整个 XML 文档。相反,它一次读取一个节点。解析器允许您实时交互。移动到下一个节点后,旧节点将从内存中删除。
基于 SAX 的解析机制比基于树的解析器更快。PHP 库包括用于处理 XML 事件的函数,如本章所述。
解析 XML 文档的第一步是拥有一个解析器对象,该对象具有 xml_parse_create() 函数
此函数创建一个新的 XML 解析器,并返回一个 XMLParser 对象,供其他 XML 函数使用。
xml_parse() 函数开始解析 XML 文档
xml_parse() 解析 XML 文档。根据需要多次调用已配置事件的处理程序。
XMLParser 扩展提供了不同的事件处理程序函数。
xml_set_element_handler()
此函数设置 XML 解析器的元素处理程序函数。每当 XML 解析器遇到 start 或 end 标记时,都会发出 Element 事件。开始标签和结束标签有单独的处理程序。
当打开新的 XML 元素时,将调用 start_handler() 函数。end_handler() 函数在关闭 XML 元素时调用。
xml_set_character_data_handler()
此函数设置 XML 解析器解析器的字符数据处理程序函数。字符数据大致是 XML 文档的所有非标记内容,包括标记之间的空格。
xml_set_processing_instruction_handler()
此函数设置 XML 解析器解析器的处理指令 (PI) 处理程序函数。<php ?> 是一个处理指令,其中 php 称为“PI 目标”。这些操作的处理是特定于应用程序的。
处理指令具有以下格式 -
xml_set_default_handler()
此函数设置 XML 解析器解析器的默认处理程序函数。未进入其他处理程序的内容将进入默认处理程序。您将在默认处理程序中获得 XML 和文档类型声明等内容。
以下示例演示了如何使用 SAX API 解析 XML 文档。我们将使用以下 test.xml -
例子
解析上述文档的 PHP 代码如下所示。它打开 XML 文件并调用 xml_parse() 函数,直到到达文件末尾。事件处理程序将数据存储在 tutors 数组中。然后,数组按元素回显。
上面的代码给出了以下输出 -