XMl 各地区天气情况的详细信息,并将解析的数据入库

发布时间:2020-06-03 发布网站:脚本之家
价值2580元廖雪峰前端视频终终终于免费啦!
脚本之家收集整理的这篇文章主要介绍了XMl 各地区天气情况的详细信息,并将解析的数据入库脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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=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");
?>

总结

以上是脚本之家为你收集整理的XMl 各地区天气情况的详细信息,并将解析的数据入库全部内容,希望文章能够帮你解决XMl 各地区天气情况的详细信息,并将解析的数据入库所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478