网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 用PHP&XML编制迷你搜索引擎(二)  

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

2006-02-27  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

三、一个最简单的用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))

{
网管u家u.bitscn@com
if(!xml_parse($parser, $data, feof($fp)))

{

return(false);

}

}



fclose($fp);



return(true);

}







function start_element($parser, $name, $attrs)

//遇到了开元素标记如<a href="link">就执行这一段,

//$name=a,$attrs为一个属性数组

{

global $level,$levelcount,$maxlevel;



$level += 1;

if($level>$maxlevel)$maxlevel=$level;

$levelcount[$level]+=1;

echo "

";

for($i=1;$i<=($level-1);$i++)echo"|    ";

if($level>0)echo"+----";



echo "<font color=red>".trim($name)." </font>";



while ( list( $key, $val ) = each( $attrs ) ) { //显示属性

echo "<font color=green>$key => $val</font>; "; 网管u家www.bitscn.net

}



}



function stop_element($parser, $name)

//遇到了开元素标记如</body>就执行这一段,

{

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<=$maxlevel;$i++){

echo $levelcount[$i]."    ";

}

}



global $level,$levelcount,$maxlevel;

$level = -1;



// 产生解析器的实例

$parser = xml_parser_create();



// 设置处理函数

xml_set_element_handler($parser, "start_element", "stop_element"); 网管u家u.bitscn@com

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();



?>
TAGs   搜索引擎   迷你   编制   "   parser   //   level   if   file   maxlevel      
 上一篇:用PHP&XML编制迷你搜索引擎(三)   下一篇:用PHP&XML编制迷你搜索引擎(一)
用PHP&XML编制迷你搜索引擎(二) 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: