PHP的三种XML解析器之Expat解析器(一)

时间:2021-09-14 00:50:28

XML文件内容

<?xml version="1.0" encoding="UTF-8" ?>
<note>
<to>腾讯</to>
<from>百度</from>
<head>BAT</head>
<body>BAT是中国互联网公司百度公司(Baidu)、阿里巴巴集团(Alibaba)、腾讯公司(Tencent)三大巨头首字母缩写。</body>
</note>

PHP文件内容

	//expat解析器
//1.利用xml_parser_create()函数初始化Expat解析器
$parser = xml_parser_create();

//2.定义遇到事件处理函数 开始标签start()、结束标签stop()、字符数据char()
function start($parser, $element_name, $element_attr){
if($element_name == 'NOTE'){
echo $element_name . '<br />';
}else{
echo $element_name . ': ';
}
}
function stop($parser, $element_name){
echo '<br />';
}
function char($parser, $data){
echo $data;
}

//3.绑定开始标签和结束标签的事件处理函数xml_set_element_handler()
xml_set_element_handler($parser,'start','stop');

//4.绑定字符数据的事件处理函数xml_set_character_data_handler()
xml_set_character_data_handler($parser,'char');

//5.利用xml_parse()解析输出XML数据
//打开XML文件
$fp = fopen('note.xml','r');
//循环读取并解析输出XML文件
while($row = fread($fp,4096)){
//当输出失败时输出错误信息
xml_parse($parser,$row) or
die(xml_error_string(xml_get_error_code($parser),
xml_get_current_line_number($parser)));
}

//6.利用xml_parser_free()释放Expat解析器
xml_parser_free($parser);


网页输出

PHP的三种XML解析器之Expat解析器(一)


结论

可以发现XML文件中note节点名称为小写字母,而在PHP代码中获取到的节点名称却是大写的,不论是在if语句里进行字符串比较还是网页内容输出,都是大写。而经过测试,节点值的大小写不改变,这里不再赘述。