天气预报Dom解析(转)

view plain
  1. <span style="font-family:Arial, Verdana, sans-serif;color:#000000;"><span style="white-space: normal;"><span style="color:#000099;">  
  2. </span></span></span>  

DOM是用与平台无关和语言无关的方式表示XML文档的官方W3C标准,DOM是以层次结构组织的节点或信息片段的集合。DOM是基于树的,DOM相对SAX来说简单,耗内存...

本次学习目标:了解DOM解析XML ,并用DOM解析谷歌提供的天气 

谷歌提供的天气接口是 http://www.google.com/ig/api?hl=zh_CN&weather=wuhan   这个接口末尾是wuhan 即 "武汉" 的拼音,依次类推,北京的查询方式是把后面拼音换成beijing就行了,这个接口是查询武汉四天的天气。

根元素(Element)是 xml_api_reply 即树的根 然后往里面扩展。

海蓝网络提供参考网站:http://www.xmhlweb.com/  


我要获取节点forecas_conditions中的数据 

DOM初始工作需要几个函数

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new InputStreamReader(lianJie(strUrl) )));

然后通过Document对象解析XML,解析XML时会用到节点,并取得他的值 用到类 NodeList  ,Node. 下面开始上我的程序 

 http://www.xmhlweb.com/

view plain
  1. package com.study.weather;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.InputStreamReader;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8.   
  9. import javax.xml.parsers.DocumentBuilder;  
  10. import javax.xml.parsers.DocumentBuilderFactory;  
  11. import javax.xml.parsers.ParserConfigurationException;  
  12.   
  13. import org.w3c.dom.Document;  
  14. import org.w3c.dom.Element;  
  15. import org.w3c.dom.Node;  
  16. import org.w3c.dom.NodeList;  
  17. import org.xml.sax.InputSource;  
  18. import org.xml.sax.SAXException;  
  19.   
  20. public class Weather  
  21. {  
  22.   
  23.     public InputStream lianJie(String strUrl) throws IOException  
  24.     {  
  25.         URL url = new URL(strUrl);  
  26.         HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();  
  27.         InputStream is = urlConnection.getInputStream();  
  28.           
  29.           
  30.         if(is!=null)  
  31.         {  
  32.             return is;  
  33.         }  
  34.         return null;  
  35.     }  
  36.       
  37.     public void resolutionXML(String strUrl) throws ParserConfigurationException, SAXException, IOException  
  38.     {  
  39.         WeatherData wd = new WeatherData();  
  40.         DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();  
  41.         DocumentBuilder builder = builderFactory.newDocumentBuilder();  
  42.         Document document = builder.parse(new InputSource(new InputStreamReader(lianJie(strUrl) )));  
  43.           
  44.         // 得到xml_api_reply   
  45.         Element rootElement = document.getDocumentElement();  
  46.         System.out.println(rootElement.getNodeName());  
  47.         Node weatherNode =  rootElement.getElementsByTagName("weather").item(0);  
  48.           
  49. //      Node weatherNode = rootElement.getFirstChild();  
  50.         System.out.println(weatherNode.getNodeName());  
  51.         // 得到weather   
  52. //      Node nodeWeather = weatherNode.getChildNodes();  
  53.   
  54.         // 得到weather下节点数组  
  55.         NodeList nodeForecastWeathers =  weatherNode.getChildNodes();  
  56.           
  57.         // 遍历weather下的节点  
  58.         for(int i=0; i<nodeForecastWeathers.getLength(); i++)  
  59.         {  
  60.               
  61.             Node nodeForecastWeather = nodeForecastWeathers.item(i);  
  62.             // 筛选节点  找名称为 forecast_conditions 节点  
  63.             if(nodeForecastWeather.getNodeType()==Node.ELEMENT_NODE  
  64.                     &&nodeForecastWeather.getNodeName().equals("forecast_conditions"))  
  65.             {  
  66.                         // 建立forecast_conditions下节点数组  
  67.                         NodeList nodeListForecastConditions =  nodeForecastWeather.getChildNodes();  
  68.                           
  69.                         for(int j=0; j<nodeListForecastConditions.getLength(); j++)  
  70.                         {  
  71.                             //day_of_week low high condition  
  72.                             Node data = nodeListForecastConditions.item(j);  
  73.                         if(data.getNodeName().equals("day_of_week"))  
  74.                         {  
  75.                             wd.setDayOfWeek(data.getAttributes().getNamedItem("data").getNodeValue());  
  76.                         }  
  77.                         else if(data.getNodeName().equals("low"))  
  78.                         {  
  79.                             wd.setLow(data.getAttributes().item(0).getNodeValue());  
  80.                         }  
  81.                         else if(data.getNodeName().equals("high"))  
  82.                         {  
  83.                             wd.setHigh(data.getAttributes().item(0).getNodeValue());  
  84.                         }  
  85.                         else if(data.getNodeName().equals("condition"))  
  86.                         {  
  87.                             wd.setConditionData(data.getAttributes().item(0).getNodeValue());  
  88.                         }  
  89.                         }  
  90.                         System.out.println(wd.printWeatheaInfo());  
  91.                       
  92.                 }  
  93.             }  
  94.           
  95.         }  
  96.               
  97.           
  98.       
  99.           
  100.       
  101.     public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException  
  102.     {  
  103.         Weather weather = new Weather();  
  104.         weather.resolutionXML("http://www.google.com/ig/api?hl=zh_CN&weather=wuhan");  
  105.    
  106.     }  
  107.     class WeatherData  
  108.     {  
  109.         String dayOfWeek;  
  110.         String low;  
  111.         String high;  
  112.         String conditionData;  
  113.         public void setDayOfWeek(String dayOfWeek)  
  114.         {  
  115.             this.dayOfWeek = dayOfWeek;  
  116.         }  
  117.         public void setLow(String low)  
  118.         {  
  119.             this.low = low;  
  120.         }  
  121.   
  122.         public void setHigh(String high)  
  123.         {  
  124.             this.high = high;  
  125.         }  
  126.   
  127.         public void setConditionData(String conditionData)  
  128.         {  
  129.             this.conditionData = conditionData;  
  130.         }  
  131.           
  132.         public String printWeatheaInfo()  
  133.         {  
  134.             return dayOfWeek+"\n"+"温度: "+low+"~~"+high+"  \n天气情况: "+conditionData;  
  135.         }  
  136.     }  
  137.   
  138. }<

转载于:https://www.cnblogs.com/wxinmylife/archive/2011/11/01/2231455.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[scikit-learn 机器学习] 4. 特征提取

文章目录1. 从类别变量中提取特征2. 特征标准化3. 从文本中提取特征3.1 词袋模型3.2 停用词过滤3.3 词干提取和词形还原3.4 TF-IDF 权重扩展词包3.5 空间有效特征向量化与哈希技巧3.6 词向量4. 从图像中提取特征4.1 从像素强度中提取特征4.2 使用卷积神经网络激活项作为特征本文…

LeetCode 第 29 场双周赛(890/2259,前39.4%)

文章目录1. 比赛结果2. 题目1. LeetCode 5432. 去掉最低工资和最高工资后的工资平均值 easy2. LeetCode 5433. n 的第 k 个因子 medium3. LeetCode 5434. 删掉一个元素以后全为 1 的最长子数组 medium4. LeetCode 5435. 并行课程 II hard1. 比赛结果 做出来了3道题。第三题卡了…

【dll 返回字符串 】2

【vc <--> vc】返回void* 类型void* __stdcall torrent_hash( const char *TorrentFilePath){char szText[41]{0};if(strcmp(TorrentFilePath,"") 0 || TorrentFilePath NULL)return NULL;string strHashString "abcdefg"; sprintf(szText,&qu…

LeetCode 1496. 判断路径是否相交(set)

1. 题目 给你一个字符串 path&#xff0c;其中 path[i] 的值可以是 ‘N’、‘S’、‘E’ 或者 ‘W’&#xff0c;分别表示向北、向南、向东、向西移动一个单位。 机器人从二维平面上的原点 (0, 0) 处开始出发&#xff0c;按 path 所指示的路径行走。 如果路径在任何位置上出…

电压压力蕊片_一文让你知道什么是压力变送器

一般来说&#xff0c;压力变送器主要由测压元件传感器(也称作压力传感器)、测量电路和过程连接件三部分组成。它能将测压元件传感器感受到的气体、液体等物理压力参数转变成标准的电信号(如4~20mADC等)&#xff0c;以供给指示报警仪、记录仪、调节器等二次仪表进行测量、指示和…

C# 多线程编程 ThreadStart ParameterizedThreadStart

原文地址&#xff1a;http://club.topsage.com/thread-657023-1-1.html 在实例化Thread的实例&#xff0c;需要提供一个委托&#xff0c;在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。在.net中提供了两种启动线程的方式&#xff0c;一种是不带参数的启动…

Matlab编程学习笔记【待续】

最近想用Matlab进行数据分析&#xff0c;算法性能测试&#xff0c;平时由于用的是C、C&#xff0c;因此很多习惯都一时改不了&#xff0c;这里自己列出来一些Matlab中明显不同的地方。 矩阵单元元素访问方式&#xff1a;A(1,2)---A[1][2]选取矩阵某个行或者列&#xff1a;A(:,1…

animation 先执行一次 在持续执行_这一次,彻底弄懂 JavaScript 执行机制

本文来源&#xff1a;ssssyokihttps://juejin.im/post/6844903512845860872不论你是javascript新手还是老鸟&#xff0c;不论是面试求职&#xff0c;还是日常开发工作&#xff0c;我们经常会遇到这样的情况&#xff1a;给定的几行代码&#xff0c;我们需要知道其输出内容和顺序…

[scikit-learn 机器学习] 5. 多元线性回归

文章目录1. 多元线性回归2. 多项式回归3. 正则化4. 线性回归应用举例&#xff08;酒质量预测&#xff09;4.1 数据预览4.2 模型验证5. 梯度下降法本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记1. 多元线性回归 模型 yαβ1x1β2x2...βnxny \alpha\bet…

LeetCode 831. 隐藏个人信息

1. 题目 给你一条个人信息字符串 S&#xff0c;它可能是一个 邮箱地址 &#xff0c;也可能是一串 电话号码 。 我们将隐藏它的隐私信息&#xff0c;通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 &#xff08;length ≥ 2&#xff09;&#xff0c;并且只包含小写…

bootstrap 树形表格渲染慢_layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)...

概述后台框架中使用树状表格是非常常用的操作&#xff0c;layUI本身并没有这种组件。 第三方的treetable.js做到了完美的实现&#xff0c;但是不能实现在双击时异步加载数据&#xff0c;本文就是站在了巨人的肩膀上实现的异步加载的树状表格~1. 使用说明本组件基于treetable.js…

[scikit-learn 机器学习] 6. 逻辑回归

文章目录1. 逻辑回归二分类2. 垃圾邮件过滤2.1 性能指标2.2 准确率2.3 精准率、召回率2.4 F1值2.5 ROC、AUC3. 网格搜索调参4. 多类别分类5. 多标签分类5.1 多标签分类性能指标本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记逻辑回归常用于分类任务 1. 逻…

libsvm回归参数寻优cgp_【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务...

1.简介该部分是代码整理的第二部分&#xff0c;为了方便一些初学者调试代码&#xff0c;作者已将该部分代码打包成一个工程文件&#xff0c;包含简单的数据处理、xgboost配置、五折交叉训练和模型特征重要性打印四个部分。数据处理部分参考&#xff1a;代码整理一&#xff0c;这…

[scikit-learn 机器学习] 7. 朴素贝叶斯

文章目录1. 朴素贝叶斯2. NB 与 逻辑回归对比本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识参考&#xff1a;《统计学习方法》朴素贝叶斯法&#xff08;Naive Bayes&#xff0c;NB&#xff09; 1. 朴素贝叶斯 通过最大概率来预测类&#xff1a…

塔菲克蓝牙适配器驱动_小身材,大功能,biaze毕亚兹USB蓝牙适配器开箱体验

在日常生活中&#xff0c;我们平时使用的台式电脑或是笔记本电脑&#xff0c;想要传输数据或者音频的时候&#xff0c;都是需要借助数据传输线或是U盘等传输设备&#xff0c;使用过程可想而知&#xff0c;有点麻烦。我们都知道&#xff0c;手机是有蓝牙传输功能的&#xff0c;只…

HDU1003——MAX SUM

简单DP&#xff0c;状态转移公式&#xff1a;num[j].data max{num[j].data, num[j].datanum[j-1].data}&#xff0c;也就是保证加上前一个数不失自己的值减小。 View Code #include <stdio.h>#define N 100010#define inf 9999999struct _num{int data;int pre;int nex…

[scikit-learn 机器学习] 8. 非线性分类和决策树

文章目录1. 特征选择标准2. 网页广告预测2.1 数量处理2.2 网格搜索模型参数3. 决策树优缺点本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识&#xff1a;《统计学习方法》决策树&#xff08;Decision Tree&#xff0c;DT&#xff09; 1. 特征选择…

智慧新泰时空大数据与云平台_智慧警务大数据云平台开发情报研判系统解决方案...

智慧公安作为公安信息化开展到高级阶段的一种警务形态&#xff0c;“智慧公安”主要采用物联网、云计算、无线通讯、智能动态感知分析等新一代信息技术,将公安工作IT根底设备与物理设备、人际环境等高度交融,以提供智能化公安决策与效劳。智慧警务大数据云平台开发情报研判系统…

RGB颜色查询对照表#FFFFFF

大致是下图这样的&#xff0c;有需要的可以点击下面的连接复制使用&#xff1a; https://www.114la.com/other/rgb.htm

ikbc机械键盘打字出现重复_超小无线机械键盘,绝佳移动打字体验

NuType筹资信息产品名称NuType上线平台Kickstarter发起团队NUPHY发起地区中国香港目标金额80,000HKD筹集金额1,301,212HKD完全进度1,627%支持人数1,612最低价格697HKD上线时间2019/11/13-2019/12/28创次方/制表时间&#xff1a;2019年12月28日文/大智笔电键盘的打字体验远不及桌…