【问题提问、论坛交流】
<? // //第一部分:几个PHP Helper函数 //
/**********************************
*从一个文件中读取XML的 * *内容到字符串中 *
*********************************/
function read_file($filename) { //读取文件 $lines=file($filename); //变量$contents是存放文件内容的变量 $contents=; while(list($key,$value)=each($lines)) { $contents.=$value; } return $contents; }
/********************************* *当PHP遇到一个XML的起始标记时 * *调用,其作用是按照一定的层次 * *显示出XML的标记 * *********************************/
function start_element($parser, $name, $attrs) { //变量$depth存放标记的深度 global $depth; //变量$spacer存放标记前所有的箭头符号 $spacer=; for ($i=1;$i<$depth[$parser];$i++) { $spacer.=->; } //设置标记显示时的颜色 if($depth[$parser]==0) { $font_color=red; } else if($depth[$parser]==1) { $font_color=green; } else { $font_color=blue; } //设置标记显示时的字体 $font_size=5-$depth[$parser]; if ($font_size<2) { $font_size=2; } //显示标记 echo <font size=.$font_size. color=.$font_color.>; echo $spacer.$depth[$parser]; if ($depth[$parser]<>0) { echo 、; } echo $name.<BR>; echo </font>; $depth[$parser]++; //如果是主标记就显示红色的水平线 if($depth[$parser]==2) { echo <hr color=red size=1>; } }
/********************************* *当PHP遇到一个XML的结束标记时 * *调用,其作用是改变当前的层次 * *计数,并在主标记下显示水平线 * *********************************/
function stop_element($parser,$name) { //变量$depth存放标记的深度 global $depth; $depth[$parser]--; //如果是主标记就显示红色的水平线 if($depth[$parser]==2) { echo <hr color=red size=1>; } }
/********************************* *当PHP遇到一个XML的标记内容时 * *调用,其作用是按照一定的层次 * *显示出标记的内容 * *********************************/
function char_data($parser,$data) { //变量$depth存放标记的深度 global $depth; //显示标记的内容 $data=trim($data); if (strlen($data)) { for ($i=1;$i<$depth[$parser]+6;$i++) echo echo <b>$data</b><br>\\n; } }
// //第二部分:PHP文件开始执行处 // //要解析的XML文件的名字
$file=address.xml; //读取文件 $data=read_file($file);
// 产生解析器的实例 $parser = xml_parser_create(); // 设置处理函数 xml_set_element_handler($parser, start_element, stop_element); xml_set_character_data_handler($parser, char_data); // 解析文件 if(!xml_parse($parser,$data,1)) { //报错 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); ?> | 编辑:xker.com
上一篇:理解PHP中的MVC编程之控制器 下一篇:没有了
|