1、关于DOM
//实现将各地区的天气情况入库
<?PHP header("content-type:text/html;charset=utf-8"); $dsn="MysqL:dbname=news;host=127.0.0.1;charset=utf8"; $user="root"; $psw=""; $pdo=newPDO($dsn,$user,$psw); $url="http://flash.weather.com.cn/wmaps/xml/china.xml"; //创建对象 $dom=newDOMDocument(); //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="insertintoweather(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=newDOMDocument(); @$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="insertintosheng(cityX,cityY,centername,fontColor,temNow,windState,windDir,windPower,humidity,time,url)values('".$cityX."','".$cityY."','".$centername."','".$fontColor."','".$temNow."','".$windState."','".$windDir."','".$windPower."','".$humidity."','".$time."','".$url."')"; set_time_limit(0);//取消脚本执行时间限制 //$data=$pdo->exec($sql1); //获取市的天气信息 $dom2=newDOMDocument(); @$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="insertintosheng(cityX,'".$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(); functionstartTag($parser,$name,$attrs) { global$stack; $tag=array("name"=>$name,"attrs"=>$attrs); array_push($stack,$tag); } functioncdata($parser,$cdata) { global$stack,$i; if(trim($cdata)) { $stack[count($stack)-1]['cdata']=$cdata; } } functionendTag($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("XMLerror:%satline%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"); ?>