xml_set_default_handler

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_set_default_handler设置默认处理程序

描述

xml_set_default_handler(XMLParser $parser, callable $handler): true

为 XML 解析器 parser 设置默认处理程序函数。

参数

parser

XML 解析器。

handler

如果传递 null 或空字符串,则处理程序将重置为其默认状态。

如果 handler 是一个 callable,则该可调用对象将被设置为处理程序。

如果 handler 是一个 string,它可以是使用 xml_set_object() 设置的对象的方法的名称。

处理程序的签名必须为

handler(XMLParser $parser, string $data): void
parser
调用处理程序的 XML 解析器。
data
data 包含字符数据。这可能是 XML 声明、文档类型声明、实体或其他没有其他处理程序存在的其他数据。

返回值

始终返回 true

变更日志

版本 描述
8.0.0 parser 现在期望一个 XMLParser 实例;以前,期望一个有效的 xml resource
添加注释

用户贡献的注释 3 notes

jp dot amarok at email dot cz
3 个月前
对于任何想知道此函数实际处理哪些事件的人

它用于在找到 XML 注释或其他声明(如 xml-stylesheet)的情况下。在这种情况下,data 参数按原样包含整个字符串,例如

<!-- 这是一个注释 -->
<?xml-stylesheet title="mystyle" type="text/xsl" href="style.xsl" ?>
phillip
19 年前
在我看来,在 PHP5 中,使用 xml_set_default_handler() 定义为默认处理程序的函数不再传递 cdata


xml_set_element_handler($this->parser, 'parseSTART', 'parseEND');
xml_set_default_handler($this->parser, 'parseDEFAULT');
function parseSTART() { ... }
function parseEND() { ... }
function parseDEFAULT() { ... }

在 PHP5 下,parseDEFAULT 不会传递任何 cdata,但在 PHP4 下会传递。至少这是我对迁移到 PHP5 后发生的奇怪(不)事情的理解。

我的解决方案是添加一个 xml_set_character_data_handler($parser, 'parseDEFAULT')。它对我有用。
anoril at anoril dot com
18 年前
我在使用两个 PHP5 安装时遇到了同样的问题:一个接受使用默认处理程序,而另一个只使用 character_data 处理程序。

可能是配置问题...

;) Nonor。
To Top