基于事件的XML解析【使用解析器】(中国天气网)

前端之家收集整理的这篇文章主要介绍了基于事件的XML解析【使用解析器】(中国天气网)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参考 :PHP手册 (XML 元素结构例程)

  1. <?PHP
  2. header("content-type:text/html;charset=utf-8");
  3. //接口URL、
  4. $file='http://flash.weather.com.cn/wmaps/xml/china.xml';
  5. $result = array();//定义全局变量
  6. function startTag($parser,$name,$attrs)
  7. {
  8. global $result;
  9. $array=array();
  10. foreach ($attrs as $k=> $v){
  11. $array[strtolower($k)]=$v;
  12. }
  13. $result[][strtolower($name)]=$array;
  14. }
  15. function cdata($parser,$cdata)
  16. {
  17. global $result;
  18. if(trim($cdata))
  19. {
  20. $result[count($result)-1]['cdata']=$cdata;
  21. }
  22. }
  23. function endTag($parser,$name)
  24. {
  25. }
  26. //创建xml解析器
  27. $xml_parser = xml_parser_create();
  28. //定义XML的处理函数(处理器)
  29. xml_set_element_handler($xml_parser,"startTag","endTag");
  30. //打开文件资源
  31. if (!($fp = fopen($file,"r"))) {
  32. die("could not open XML input");
  33. }
  34. //循环处理数据
  35. while ($data = fread($fp,4096)) {
  36. if (!xml_parse($xml_parser,$data,feof($fp))) {
  37. die(sprintf("XML error: %s at line %d",xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));
  38. }
  39. }
  40. //释放解析器
  41. xml_parser_free($xml_parser);
  42. print("<pre>\n");
  43. var_dump($result);
  44. ?>

猜你在找的XML相关文章