本例中的php文件读取、显示xml文件内容 以下为php文件的内容,把该php文件和slashdot.xml放在同一个文件夹即可 $open_tags = array( 'STORY' => ' 'TITLE' => ' 'URL' => ' 'AUTHOR'=> ' ); $close_tags = array( 'STORY' => ' 'TITLE' => '', 'URL' => '', 'AUTHOR'=> '' ); ?> //下面就是定义函数来提取数据: // 处理开始标记的属性指 // $attrs是一个多维数组,键值为属性名, 值就是该属性的值 function startElement($parser, $name, $attrs=''){ global $open_tags, $temp, $current_tag; $current_tag = $name; if ($format = $open_tags[$name]){ switch($name){ case 'STORY': echo '新的故事: '; break; default: break; } } } // $current_tag告诉我们正在处理的标记,我们随后会在characterData函数中使用 // // 当遇到标记时我们知道要flush所有的临时变量准备操作下一个标记 'TITLE' => '', 'URL' => '', 'AUTHOR'=> '' ); ?> //下面就是定义函数来提取数据: // 处理开始标记的属性指 // $attrs是一个多维数组,键值为属性名, 值就是该属性的值 function startElement($parser, $name, $attrs=''){ global $open_tags, $temp, $current_tag; $current_tag = $name; if ($format = $open_tags[$name]){ switch($name){ case 'STORY': echo '新的故事: '; break; default: break; } } } // $current_tag告诉我们正在处理的标记,我们随后会在characterData函数中使用 // // 当遇到标记时我们知道要flush所有的临时变量准备操作下一个标记 function endElement($parser, $name, $attrs=''){ global $close_tags, $temp, $current_tag; if ($format = $close_tags[$name]){ switch($name){ case 'STORY': return_page($temp); $temp = ''; break; default: break; } } } // 传送给此函数的是元素间的数据 // 例如,对 function characterData($parser, $data){ global $current_tag, $temp, $catID; switch($current_tag){ case 'TITLE': $temp['title'] = $data; $current_tag = ''; break; case 'URL': $temp['url'] = $data; $current_tag = ''; break; case 'AUTHOR': $temp['author'] = $data; $current_tag = ''; default: break; } } ?> function return_page(){ global $temp; echo 'o '.$temp['title'].' '; echo 'Author:'.$temp['author'].' '; echo '-----------------------------'; echo ' '; } // 分析的内容 $xml_file = 'slashdot.xml'; // 定义字符集,默认是UTF-8 $type = 'UTF-8'; // 建立解析器 $xml_parser = xml_parser_create($type); // 设置解析选项 xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true); xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8'); // 告诉PHP发现元素时要调用什么函数 // 这些函数同时也处理元素的属性 xml_set_element_handler($xml_parser, 'startElement','endElement'); //告诉PHP对字符数据调用什么函数 xml_set_character_data_handler($xml_parser, 'characterData'); if (!($fp = fopen($xml_file, 'r'))) { die("无法打开 $xml_file 文件进行解析!n"); } // 通过循环来解析整个文件 while ($data = fread($fp, 4096)) { if (!($data = utf8_encode($data))) { echo 'ERROR'."n"; } if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf( "XML error: %s at line %dnn", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } } xml_parser_free($xml_parser); ?> |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 03:19 , Processed in 0.246749 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.