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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇