PHP中的xml_set_external_entity_ref_handler()函数
- xml_set_external_entity_ref_handler() 函数指定解析器在 XML 文档中找到外部实体时要调用的函数。
- 在 xml_set_external_entity_ref_handler() 函数中,handler 参数也可以是包含方法名称和对象引用的数组。
- xml_set_external_entity_ref_handler() 函数在成功时返回 TRUE。
- xml_set_external_entity_ref_handler() 函数在失败时返回 FALSE。
语法
xml_set_external_entity_ref_handler(parser,handler)
参数
| 参数 | 说明 |
|---|---|
| parser | 这是必需的参数。它被指定用于XML解析器。 |
| handler | 这是必需的参数。它指定了当解析器找到外部实体时要调用的函数。 |
带有"handler"参数的xml_set_external_entity_ref_handler()函数必须具有五个参数:
| 参数 | 说明 |
|---|---|
| parser | 这是必需的参数。指定一个变量,该变量包含调用处理程序的XML解析器。 |
| name | 这是必需的参数。它可以指定一个包含外部实体名称的变量 |
| base | 这是必需的参数。它指定解析外部实体的系统标识符的基础。现在,这总是空的 |
| system_id | 这是必需的参数。它指定外部实体的系统标识符。 |
| public_id | 这是必需的参数。它指定外部实体的公共标识符。 |
<?php
$xml_parser=xml_parser_create();
function char($xml_parser,$xml_data)
{
echo $xml_data;
}
function ext_ent_handler($xml_parser,$ent,$base,$sysID,$pubID)
{
echo "$ent<br />";
echo "$sysID<br />";
echo "$pubID<BR />";
}
xml_set_character_data_handler($xml_parser,"char");
xml_set_external_entity_ref_handler($xml_parser, "ext_ent_handler");
$fp=fopen("test1.xml","r");
while ($xml_data=fread($fp,4096))
{
xml_parse($xml_parser,$xml_data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
xml_parser_free($xml_parser);
?>
日期:2020-06-02 22:15:39 来源:oir作者:oir
