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=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,如需转载请自行联系原作者






相关文章
|
7月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1786 1
|
7月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
461 4
JSON数据解析实战:从嵌套结构到结构化表格
|
7月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
202 15
|
7月前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
7月前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
8月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
196 4
|
7月前
|
机器学习/深度学习 人工智能 文字识别
从“泛读”到“精读”:合合信息文档解析如何让大模型更懂复杂文档?
随着deepseek等大模型逐渐步入视野,理论上文档解析工作应能大幅简化。 然而,实际情况却不尽如人意。当前的多模态大模型虽然具备强大的视觉与语言交互能力,但在解析非结构化文档时,仍面临复杂版式、多元素混排以及严密逻辑推理等挑战。
212 0
|
8月前
|
数据采集 监控 搜索推荐
深度解析淘宝商品详情API接口:解锁电商数据新维度,驱动业务增长
淘宝商品详情API接口,是淘宝开放平台为第三方开发者提供的一套用于获取淘宝、天猫等电商平台商品详细信息的应用程序接口。该接口涵盖了商品的基本信息(如标题、价格、图片)、属性参数、库存状况、销量评价、物流信息等,是电商企业实现商品管理、市场分析、营销策略制定等功能的得力助手。
|
8月前
|
数据采集 前端开发 API
SurfGen爬虫:解析HTML与提取关键数据
SurfGen爬虫:解析HTML与提取关键数据
|
7月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。

推荐镜像

更多
  • DNS