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");
?>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。