1、关于DOM
文件名:city.php
//实现将各地区的天气情况入库
<?php header("content-type:text/html;charset=utf-8"); $dsn="mysql:dbname=news;host=127.0.0.1;charset=utf8"; $user="root"; $psw=""; $pdo=new PDO($dsn,$user,$psw); $url = "http://flash.weather.com.cn/wmaps/xml/china.xml"; //创建对象 $dom=new DOMDocument(); //print_r($dom);die; $dom->load($url); //读取最外层的节点 $city=$dom->getElementsByTagName("city"); //print_r($city);die; $len = $city->length; for($i=0;$i<$len;$i++){ $item = $city->item($i); $quName = $item->getAttribute("quName"); //print_r($quName);die; $pyName = $item->getAttribute("pyName"); $cityname = $item->getAttribute("cityname"); $state1 = $item->getAttribute("state1"); $state2 = $item->getAttribute("state2"); $stateDetailed = $item->getAttribute("stateDetailed"); $tem1 = $item->getAttribute("tem1"); $tem2 = $item->getAttribute("tem2"); $windState = $item->getAttribute("windState"); //拼写添加sql语句 $sql = "insert into weather(quName,pyName,cityname,state1,state2,stateDetailed,tem1,tem2,windState)values('".$quName."','".$pyName."','".$cityname."','".$state1."','".$state2."','".$stateDetailed."','".$tem1."','".$tem2."','".$windState."')"; //执行sql语句 set_time_limit(0);//取消脚本执行时间限制 $res = $pdo->exec($sql); //获取省份信息 $dom1=new DOMDocument(); @$dom1->load("http://flash.weather.com.cn/wmaps/xml/".$pyName.".xml"); $citys=$dom1->getElementsByTagName("city"); $leng = $citys->length; for($j=0;$j<$leng;$j++){ $item1 = $citys->item($j); $cityX = $item1->getAttribute("cityX"); $cityY = $item1->getAttribute("cityY"); $cityname = $item1->getAttribute("cityname"); $centername = $item1->getAttribute("centername"); $fontColor = $item1->getAttribute("fontColor"); $pyName = $item1->getAttribute("pyName"); $state1 = $item1->getAttribute("state1"); $state2 = $item1->getAttribute("state2"); $stateDetailed = $item1->getAttribute("stateDetailed"); $tem1 = $item1->getAttribute("tem1"); $tem2 = $item1->getAttribute("tem2"); $temNow = $item1->getAttribute("temNow"); $windState = $item1->getAttribute("windState"); $windDir = $item1->getAttribute("windDir"); $windPower = $item1->getAttribute("windPower"); $humidity = $item1->getAttribute("humidity"); $time = $item1->getAttribute("time"); $url = $item1->getAttribute("url"); //var_dump($humidity);die; $sql1 = "insert into sheng(cityX,cityY,cityname,centername,fontColor,pyName,state1,state2,stateDetailed,tem1,tem2,temNow,windState,windDir,windPower,humidity,time,url)values('".$cityX."','".$cityY."','".$cityname."','".$centername."','".$fontColor."','".$pyName."','".$state1."','".$state2."','".$stateDetailed."','".$tem1."','".$tem2."','".$temNow."','".$windState."','".$windDir."','".$windPower."','".$humidity."','".$time."','".$url."')"; set_time_limit(0);//取消脚本执行时间限制 //$data = $pdo->exec($sql1); //获取市的天气信息 $dom2=new DOMDocument(); @$dom2->load("http://flash.weather.com.cn/wmaps/xml/".$pyName.".xml"); $city1=$dom2->getElementsByTagName("city"); $length = $city1->length; //print_r($length); for($s=0;$s<$length;$s++){ $item2 = $city1->item($s); $cityX = $item2->getAttribute("cityX"); $cityY = $item2->getAttribute("cityY"); $cityname = $item2->getAttribute("cityname"); $centername = $item2->getAttribute("centername"); $fontColor = $item2->getAttribute("fontColor"); $pyName = $item2->getAttribute("pyName"); $state1 = $item2->getAttribute("state1"); $state2 = $item2->getAttribute("state2"); $stateDetailed = $item2->getAttribute("stateDetailed"); $tem1 = $item2->getAttribute("tem1"); $tem2 = $item2->getAttribute("tem2"); $temNow = $item2->getAttribute("temNow"); $windState = $item2->getAttribute("windState"); $windDir = $item2->getAttribute("windDir"); $windPower = $item2->getAttribute("windPower"); $humidity = $item2->getAttribute("humidity"); $time = $item2->getAttribute("time"); $url = $item2->getAttribute("url"); $sql2 = "insert into sheng(cityX,cityY,cityname,centername,fontColor,pyName,state1,state2,stateDetailed,tem1,tem2,temNow,windState,windDir,windPower,humidity,time,url)values('".$cityX."','".$cityY."','".$cityname."','".$centername."','".$fontColor."','".$pyName."','".$state1."','".$state2."','".$stateDetailed."','".$tem1."','".$tem2."','".$temNow."','".$windState."','".$windDir."','".$windPower."','".$humidity."','".$time."','".$url."')"; set_time_limit(0);//取消脚本执行时间限制 $data1 = $pdo->exec($sql2); } } } ?>
2、XML基于事件,循环出各地区天气信息:jiexi.php
<?php header("content-type:text/html;charset=utf-8"); $file = 'http://flash.weather.com.cn/wmaps/xml/china.xml'; $stack = array(); function startTag($parser, $name, $attrs) { global $stack; $tag=array("name"=>$name,"attrs"=>$attrs); array_push($stack,$tag); } function cdata($parser, $cdata) { global $stack,$i; if(trim($cdata)) { $stack[count($stack)-1]['cdata']=$cdata; } } function endTag($parser, $name) { global $stack; $stack[count($stack)-2]['children'][] = $stack[count($stack)-1]; array_pop($stack); } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startTag", "endTag"); xml_set_character_data_handler($xml_parser, "cdata"); $data = xml_parse($xml_parser,file_get_contents($file)); if(!$data) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } xml_parser_free($xml_parser); print("<pre>\n"); print_r($stack); print("</pre>\n"); ?>
本文转自噼里啪啦啦 51CTO博客,原文链接:http://blog.51cto.com/pilipala/1650790,如需转载请自行联系原作者