读书人

SAX形式解析XML

发布时间: 2013-03-10 09:38:39 作者: rapoo

SAX方式解析XML

<?php
header("Content-Type:text/html;charset=utf-8");
//创建XML解析器
$parser = xml_parser_create('utf-8');
//规定如何让处理我们遇到的标签和数据
/*
参数1,当前解析器
参数2,开始标签处理函数
参数3,结束标签处理函数

*/
xml_set_element_handler($parser,'start_element','end_element');
/*
参数1,解析器
参数2,开始标签名
参数3,属性名

*/

function start_element($parser,$name,$attr){
echo '开始标签'.$name.'<br/>';
echo '属性:'.$attr[ID].'<br>';
}
/*
参数1,解析器
参数2,结束标签名

*/

function end_element($parser,$name){
echo '结束标签'.$name.'<br/>';
}

/*
处理数据
参数1,解析器资源
参数2,数据处理器名称

*/

xml_set_character_data_handler($parser,'data_process');
/*
数据处理器
参数1,当前解析器
参数2,数据内容

*/
function data_process($parser,$data){
echo $data."<br>";

}
/*
开始解析之前,需要读入xml文件的内容,解析器处理的是文件的内容不是文件,所以需要先通过文件处理函数获得文件的内容

*/
$xml_data = file_get_contents('bookshelf.xml');
/*
开始解析:
参数1,解析器
参数2,解析的数据
参数3,告诉解析器是否为最后一个数据()否则解析器会继续等待
*/
xml_parse($parser,$xml_data,true);

//处理错误
if($res){
echo "处理成功";
}else{
//失败,处理错误
var_dump(xml_get_error_code($parser));
var_dump(xml_get_current_line_number($parser));
var_dump(xml_get_current_column_number($parser));
var_dump(xml_error_string(xml_get_error_code($parser)));

}

读书人网 >XML SOAP

热点推荐