<?php
// 处理开始元素函数
function startElementHandler($parser, $element, $attributes) {
echo "元素开始:".$element."<br>";
if($attributes) {
echo "属性:";
foreach ( $attributes as $key => $value ) {
echo $key."=".$value." ";
}
echo "<br>";
}
}
// 处理结束元素函数
function endElementHandler($parser, $element) {
echo "元素结束:".$element."<br><br>";
}
// 处理字符串数据函数
function characterDataHandler($parser, $data) {
if(trim($data)) {
echo "字符串数据:".htmlspecialchars($data)."<br>";
}
}
// 处理解析错误函数
function parserError($parser) {
$code = xml_get_error_code($parser);
$error = xml_error_string($code);
$errorColumn = xml_get_current_column_number($parser);
$errorLine = xml_get_current_line_number($parser);
return "错误代码:".$code." 错误:".$error."在第".$errorLine."行第".$errorColumn."列";
}
// 创建解析器
$parser = xml_parser_create();
// 注册元素处理函数
xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($parser, "characterDataHandler");
// 获取文件内容
$xml = file_get_contents("parser.xml");
// 开始解析parser.xml文档,解析错误就调用错误处理函数
xml_parse($parser, $xml) or die(parserError());
// 删除解析器并释放内存
xml_parser_free($parser);
?>
Copy after login