PHP头条
热点:

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


三、一个最简单的用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<=($level-1);$i++)echo"| ";

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<=$maxlevel;$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();



?>

www.phpzy.comtrue/phpyy/9462.htmlTechArticle用PHP // XML文件 // 解析XML文件的函数 function xml_parse_from_file($parser, $file) { if(!file_exists($file)) { die("Cant find file "$file"."); } if(!($fp = @fopen($file, "r"))) { die("Cant open file "$file"."); } while($data = fre...

相关文章

相关频道:

PHP之友评论

今天推荐