函数名:xml_set_element_handler()
适用版本:PHP 4, PHP 5, PHP 7
用法:xml_set_element_handler() 函数用于设置 XML 解析器遇到元素开始和结束时的处理函数。
语法:xml_set_element_handler ( resource $parser , callable $start_element_handler , callable $end_element_handler ) : bool
参数:
- parser:XML 解析器资源。
- start_element_handler:元素开始时的处理函数。该函数必须接受 3 个参数:解析器资源、元素名称和元素属性数组。
- end_element_handler:元素结束时的处理函数。该函数必须接受 2 个参数:解析器资源和元素名称。
返回值:如果成功设置处理函数则返回 true,否则返回 false。
示例:
// 创建 XML 解析器
$parser = xml_parser_create();
// 设置元素开始和结束时的处理函数
xml_set_element_handler($parser, "startElement", "endElement");
// 定义元素开始时的处理函数
function startElement($parser, $element_name, $element_attrs) {
echo "Start element: " . $element_name . "\n";
foreach ($element_attrs as $attr_name => $attr_value) {
echo "Attribute: " . $attr_name . " = " . $attr_value . "\n";
}
}
// 定义元素结束时的处理函数
function endElement($parser, $element_name) {
echo "End element: " . $element_name . "\n";
}
// 解析 XML 数据
$xml_data = "<root><item id='1'>Item 1</item><item id='2'>Item 2</item></root>";
xml_parse($parser, $xml_data);
// 释放 XML 解析器资源
xml_parser_free($parser);
输出结果:
Start element: root
Start element: item
Attribute: id = 1
End element: item
Start element: item
Attribute: id = 2
End element: item
End element: root
以上示例中,首先创建了一个 XML 解析器,然后使用 xml_set_element_handler() 函数设置了元素开始和结束时的处理函数。接着定义了两个处理函数 startElement() 和 endElement(),分别用于处理元素开始和结束的事件。最后通过 xml_parse() 函数解析了一个 XML 数据,并输出了处理结果。最后需要使用 xml_parser_free() 函数释放 XML 解析器资源。