您好,欢迎访问一九零五行业门户网

用PHP&XML编制迷你搜索引擎(二)_PHP

三、一个最简单的用php显示xml的范例
下面的程序是将解析xml并按照树形结构输出至浏览器,并显示每层的元素总数。
__________________________________________________________
$file = demo.xml;// xml文件
// 解析xml文件的函数
function xml_parse_from_file($parser, $file)
{
if(!file_exists($file))
{
die(can’t find file $file.);
}
if(!($fp = @fopen($file, r)))
{
die(can’t open file $file.);
}
while($data = fread($fp, 4096))
{
if(!xml_parse($parser, $data, feof($fp)))
{
return(false);
}
}
fclose($fp);
return(true);
}
function start_element($parser, $name, $attrs)
//遇到了开元素标记如就执行这一段,
//$name=a,$attrs为一个属性数组
{
global $level,$levelcount,$maxlevel;
$level += 1;
if($level>$maxlevel)$maxlevel=$level;
$levelcount[$level]+=1;
echo
;
for($i=1;$i
if($level>0)echo+----;
echo .trim($name). ;
while ( list( $key, $val ) = each( $attrs ) ) { //显示属性
echo $key => $val; ;
}
}
function stop_element($parser, $name)
//遇到了开元素标记如
就执行这一段,
{
global $level;
$level -= 1;
}
function data($parser, $data)
{
global $level;
if(trim($data)!=){
echo trim($data);
}
}
function showcount() //显示每一层的元素总数
{
global $maxlevel,$levelcount;
echo
;
for ($i=0;$i
echo $levelcount[$i].    ;
}
}
global $level,$levelcount,$maxlevel;
$level = -1;
// 产生解析器的实例
$parser = xml_parser_create();
// 设置处理函数
xml_set_element_handler($parser, start_element, stop_element);
xml_set_character_data_handler($parser, data);
xml_parser_set_option($parser, xml_option_case_folding, 0);
// 解析文件
$ret = xml_parse_from_file($parser, $file);
if(!$ret)
{
die(sprintf(xml error: %s at line %d,
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// 释放解析器
xml_parser_free($parser);
showcount();
?>
其它类似信息

推荐信息