获取xml并解析其中的数据:

package getweather.xml;

import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import getweather.beans.TodayWeather;
import getweather.beans.WeatherBean; public class GetXml {
/**
* 获取网页中的xml
* @param url 需要传入的网址
* @return 返回的xml数据内容,数据格式为org.jsoup.nodes.Document
*/
public Document getXml(String url){ Document xmlContent = null;
try {
if((url!=null)||(("").equals(url))){
xmlContent = Jsoup.connect(url)
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xmlContent;
} /**
* 获取天气信息数据集合
* @param document 获取到的xml数据内容
* @param dataTagNames 需要从xml中获取的数据对应的TagName
* @return 返回包含天气数据内容的Map<String,String>集合
*/ public Map<String, String> getData(Document document,String dataTagNames[]){
Map<String, String> weatherMap = new HashMap<String,String>();
if(document!=null){
for (String dataTagName : dataTagNames) {
Elements elementsData = document.getElementsByTag(dataTagName);
String data = elementsData.first().text();
weatherMap.put(dataTagName, data);
} } return weatherMap;
} /**
* 获取天气信息数据集合(主要用于获取yesterday的天气信息)
* @param document 获取到的xml数据内容
* @param fatherTagName 需要从xml中获取的数据对应的TagName的父级标签的TagName
* @param dataTagNames 需要从xml中获取的数据对应的TagName
* @return 返回包含天气数据内容的Map<String,String>集合
*/ public Map<String, String> getData(Document document,String fatherTagName,String dataTagNames[]){
Map<String, String> weatherMap = new HashMap<String,String>();
if(document!=null){
Element fatherElement = document.getElementsByTag(fatherTagName).first();
Elements elementsData;
for (String dataTagName : dataTagNames) { elementsData = fatherElement.getElementsByTag(dataTagName);
if(!(elementsData.isEmpty())){
for (Element element : elementsData) {
weatherMap.put(element.tagName(), element.text());
}
}
} } return weatherMap;
} /**
* 获取天气信息数据集合(主要用于获取yesterday的天气信息)
* @param document 获取到的xml数据内容
* @param grandFatherTagName 需要从xml中获取的数据对应的TagName的祖父级标签的TagName
* @param fatherTagName 需要从xml中获取的数据对应的TagName的父级标签的TagName
* @param dataTagNames 需要从xml中获取的数据对应的TagName
* @return 返回包含天气数据内容的Map<String,String>集合
*/ public Map<String, String> getData(Document document,String grandFatherTagName,String fatherTagName,String dataTagNames[]){
Map<String, String> weatherMap = new HashMap<String,String>();
if(document!=null){
Element fatherElement = (document.getElementsByTag(grandFatherTagName).first()).getElementsByTag(fatherTagName).first();
Element elementsData;
for (String dataTagName : dataTagNames) {
elementsData = fatherElement.getElementsByTag(dataTagName).first();
weatherMap.put(elementsData.tagName(), elementsData.text());
} } return weatherMap;
} public Elements getForecastWeather(Document document,String tagName){
Elements weatherElements = null;
if(document!=null){
weatherElements = document.getElementsByTag(tagName);
}
return weatherElements;
} public Map<String, String> getData(Element element,String dataTagNames[]){
Map<String, String> weatherMap = new HashMap<String,String>();
if(element!=null){
for (String dataTagName : dataTagNames) {
Elements elementsData = element.getElementsByTag(dataTagName);
String data = elementsData.first().text();
weatherMap.put(dataTagName, data);
} } return weatherMap;
} public Map<String, String> getData2(Element element,String sonTagName,String dataTagNames[]){
Map<String, String> weatherMap = new HashMap<String,String>();
Elements elementsData = null;
if(element!=null){
for (String dataTagName : dataTagNames) {
elementsData = element.getElementsByTag(sonTagName).first().getElementsByTag(dataTagName);
String data = elementsData.first().text();
weatherMap.put(dataTagName, data);
} } return weatherMap;
} public TodayWeather getTodayW(){
TodayWeather todayWeather = new TodayWeather();
GetXml getweather = new GetXml();
Document xml = getweather.getXml("http://wthrcdn.etouch.cn/WeatherApi?city=上海");
String todayWeatherTagName[] ={"city","updatetime","wendu","fengli","shidu","fengxiang",
"sunrise_1","sunset_1","aqi","pm25","suggest","quality","o3","co","pm10","so2",
"no2"};
Map<String, String> todayWeatherData = getweather.getData(xml,todayWeatherTagName);
todayWeather.setWenDu(todayWeatherData.get("wendu"));
todayWeather.setShiDu(todayWeatherData.get("shidu"));
todayWeather.setQuality(todayWeatherData.get("quality"));
todayWeather.setFengLi(todayWeatherData.get("fengli"));
todayWeather.setFengXiang(todayWeatherData.get("fengxiang"));
todayWeather.setSunrise(todayWeatherData.get("sunrise_1"));
todayWeather.setSunset(todayWeatherData.get("sunset_1"));
todayWeather.setAqi(todayWeatherData.get("aqi"));
todayWeather.setPm25(todayWeatherData.get("pm25"));
todayWeather.setO3(todayWeatherData.get("o3"));
todayWeather.setCo(todayWeatherData.get("co"));
todayWeather.setPm10(todayWeatherData.get("pm10"));
todayWeather.setSo2(todayWeatherData.get("so2"));
todayWeather.setNo2(todayWeatherData.get("no2"));
todayWeather.setSuggest(todayWeatherData.get("suggest"));
todayWeather.setUpdateTime(todayWeatherData.get("updatetime")); return todayWeather;
} public WeatherBean getYesterdayW(){
WeatherBean yWeatherBean = new WeatherBean();
GetXml getweather = new GetXml();
Document xml = getweather.getXml("http://wthrcdn.etouch.cn/WeatherApi?city=上海");
String yesterdayWeatherTagNameSon[] = {"date_1","high_1","low_1"};
String yesterdayWeatherTagNameGrandson[]={"type_1","fx_1","fl_1"};
Map<String, String> yesterdayWeatherData = getweather.getData(xml,"yesterday",yesterdayWeatherTagNameSon);
Map<String, String> yesterdayWeatherData2 = getweather.getData(xml,"yesterday","day_1",yesterdayWeatherTagNameGrandson);
Map<String, String> yesterdayWeatherData3 = getweather.getData(xml,"yesterday","night_1",yesterdayWeatherTagNameGrandson);
yWeatherBean.setDayWeatherDes(yesterdayWeatherData2.get("type_1"));
yWeatherBean.setDayWindDirection(yesterdayWeatherData2.get("fx_1"));
yWeatherBean.setDayWindType(yesterdayWeatherData2.get("fl_1"));
yWeatherBean.setDate(yesterdayWeatherData.get("date_1"));
yWeatherBean.setHightTemp(yesterdayWeatherData.get("high_1"));
yWeatherBean.setLowTemp(yesterdayWeatherData.get("low_1"));
yWeatherBean.setNightWeatherDes(yesterdayWeatherData3.get("type_1"));
yWeatherBean.setNightWindDirection(yesterdayWeatherData3.get("fx_1"));
yWeatherBean.setNightWindType(yesterdayWeatherData3.get("fl_1")); return yWeatherBean;
} public List<WeatherBean> getForecasterdayW(){
List<WeatherBean> fWeatherList = new LinkedList<>();
WeatherBean fWeatherBean = null;
GetXml getweather = new GetXml();
Document xml = getweather.getXml("http://wthrcdn.etouch.cn/WeatherApi?city=上海");
String forecastWeatherTagNameSon[] = {"date","high","low"};
String forecastWeatherTagNameGrandson[] = {"type","fengxiang","fengli"}; Elements weatherElements = getweather.getForecastWeather(xml,"weather");
Map<String, String> forecastWeatherData =new HashMap<>();
Map<String, String> forecastWeatherData2 =new HashMap<>();
Map<String, String> forecastWeatherData3 =new HashMap<>();
for (Element element :weatherElements ) {
fWeatherBean = new WeatherBean();
forecastWeatherData = getweather.getData(element, forecastWeatherTagNameSon);
forecastWeatherData2 = getweather.getData2(element,"day", forecastWeatherTagNameGrandson);
forecastWeatherData3 = getweather.getData2(element,"night",forecastWeatherTagNameGrandson);
fWeatherBean.setDayWeatherDes(forecastWeatherData2.get("type"));
fWeatherBean.setDayWindDirection(forecastWeatherData2.get("fengxiang"));
fWeatherBean.setDayWindType(forecastWeatherData2.get("fengli"));
fWeatherBean.setDate(forecastWeatherData.get("date"));
fWeatherBean.setHightTemp(forecastWeatherData.get("high"));
fWeatherBean.setLowTemp(forecastWeatherData.get("low"));
fWeatherBean.setNightWeatherDes(forecastWeatherData3.get("type"));
fWeatherBean.setNightWindDirection(forecastWeatherData3.get("fengxiang"));
fWeatherBean.setNightWindType(forecastWeatherData3.get("fengli"));
fWeatherList.add(fWeatherBean); } return fWeatherList;
} }

  today天气Beans

package getweather.beans;

public class TodayWeather {

	private String updateTime;  //数据更新时间
private String wenDu; //当前温度
private String fengLi; //风力等级
private String fengXiang; //风力等级
private String shiDu; //空气相对湿度
private String sunrise; //风向
private String sunset; //日出时间
private String aqi; //日落时间
private String pm25; //pm2.5浓度
private String quality; //空气质量描述
private String o3; //臭氧浓度
private String co; //一氧化碳浓度
private String pm10; //pm10浓度
private String so2; //二氧化硫浓度
private String no2; //二氧化氮浓度
private String suggest; //建议 public TodayWeather() {
} public String getUpdateTime() {
return updateTime;
} public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
} public String getWenDu() {
return wenDu;
} public void setWenDu(String wenDu) {
this.wenDu = wenDu;
} public String getFengLi() {
return fengLi;
} public void setFengLi(String fengLi) {
this.fengLi = fengLi;
} public String getShiDu() {
return shiDu;
} public void setShiDu(String shiDu) {
this.shiDu = shiDu;
} public String getSunrise() {
return sunrise;
} public void setSunrise(String sunrise) {
this.sunrise = sunrise;
} public String getSunset() {
return sunset;
} public void setSunset(String sunset) {
this.sunset = sunset;
} public String getAqi() {
return aqi;
} public void setAqi(String aqi) {
this.aqi = aqi;
} public String getPm25() {
return pm25;
} public void setPm25(String pm25) {
this.pm25 = pm25;
} public String getQuality() {
return quality;
} public void setQuality(String quality) {
this.quality = quality;
} public String getO3() {
return o3;
} public void setO3(String o3) {
this.o3 = o3;
} public String getCo() {
return co;
} public void setCo(String co) {
this.co = co;
} public String getPm10() {
return pm10;
} public void setPm10(String pm10) {
this.pm10 = pm10;
} public String getSo2() {
return so2;
} public void setSo2(String so2) {
this.so2 = so2;
} public String getNo2() {
return no2;
} public void setNo2(String no2) {
this.no2 = no2;
} public String getSuggest() {
return suggest;
} public void setSuggest(String suggest) {
this.suggest = suggest;
} public String getFengXiang() {
return fengXiang;
} public void setFengXiang(String fengXiang) {
this.fengXiang = fengXiang;
} }

  Yesterday天气及未来天气Beans

package getweather.beans;

public class WeatherBean {
private String date;//日期
private String hightTemp;//最高温度
private String lowTemp;//最低温度
private String dayWeatherDes;//天气描述
private String dayWindDirection;//风向
private String dayWindType;//风力
private String nightWeatherDes;//夜间天气描述
private String nightWindDirection;//夜间风向
private String nightWindType;//夜间风力等级 public WeatherBean() {
} public String getDate() {
return date;
} public void setDate(String date) {
this.date = date;
} public String getHightTemp() {
return hightTemp;
} public void setHightTemp(String hightTemp) {
this.hightTemp = hightTemp;
} public String getLowTemp() {
return lowTemp;
} public void setLowTemp(String lowTemp) {
this.lowTemp = lowTemp;
} public String getDayWeatherDes() {
return dayWeatherDes;
} public void setDayWeatherDes(String dayWeatherDes) {
this.dayWeatherDes = dayWeatherDes;
} public String getDayWindDirection() {
return dayWindDirection;
} public void setDayWindDirection(String dayWindDirection) {
this.dayWindDirection = dayWindDirection;
} public String getDayWindType() {
return dayWindType;
} public void setDayWindType(String dayWindType) {
this.dayWindType = dayWindType;
} public String getNightWeatherDes() {
return nightWeatherDes;
} public void setNightWeatherDes(String nightWeatherDes) {
this.nightWeatherDes = nightWeatherDes;
} public String getNightWindDirection() {
return nightWindDirection;
} public void setNightWindDirection(String nightWindDirection) {
this.nightWindDirection = nightWindDirection;
} public String getNightWindType() {
return nightWindType;
} public void setNightWindType(String nightWindType) {
this.nightWindType = nightWindType;
} @Override
public String toString() {
return "WeatherBean [date=" + date + ", hightTemp=" + hightTemp + ", lowTemp=" + lowTemp + ", dayWeatherDes="
+ dayWeatherDes + ", dayWindDirection=" + dayWindDirection + ", dayWindType=" + dayWindType
+ ", nightWeatherDes=" + nightWeatherDes + ", nightWindDirection=" + nightWindDirection
+ ", nightWindType=" + nightWindType + "]";
} }

  

java解析xml实例——获取天气信息的更多相关文章

  1. Java通过webservice接口获取天气信息

    通过SOAP请求的方式获取天气信息并解析返回的XML文件. 参考: http://www.webxml.com.cn/WebServices/WeatherWS.asmx import java.io ...

  2. java 解析 XML实例

    package com.hseact.fecp.servlet; import java.io.IOException; import javax.xml.parsers.DocumentBuilde ...

  3. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

  4. java获取天气信息

    通过天气信息接口获取天气信息,首先要给项目导入程序所需要的包,具体需要如下几个包: json-lib-2.4.jar ezmorph-1.0.6.jar commons-beanutils-1.8.3 ...

  5. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  6. Java 解析 XML

    Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...

  7. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  8. Java解析XML:Jdom解析和SAX解析

    今天看了Java解析XML的几种方法,记录一下 1.Jdom解析 (1)读取XML内容 private static void readXML() { // TODO Auto-generated m ...

  9. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

随机推荐

  1. Linux课程---4、Linux目录结构及常用命令(目录结构)

    Linux课程---4.Linux目录结构及常用命令(目录结构) 一.总结 一句话总结: 家目录:./root:root用户的家目录 能执行的程序:./bin:所有用户都能执行的程序:./sbin:只 ...

  2. Java进阶07 嵌套类

    到现在为止,我们都是在Java文件中直接定义类.这样的类出现在包(package)的级别上.Java允许类的嵌套定义. 这里将讲解如何在一个类中嵌套定义另一个类. 嵌套 内部类 Java允许我们在类的 ...

  3. noip退役赛

    上下午 6 题一起考 自闭了 T1 小明要参加一场比赛,赛制给你一个表格 $p$ ,$p_{(i,j)}$ 表示他在第 $i$ 场比赛前如果输了 $j$ 场,他这一场赢的概率,他也可以故意输掉任意多场 ...

  4. codevs1020 孪生蜘蛛

    1020 孪生蜘蛛   题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息 ...

  5. BZOJ3307:雨天的尾巴

    浅谈线段树合并:https://www.cnblogs.com/AKMer/p/10251001.html 题目传送门:https://lydsy.com/JudgeOnline/problem.ph ...

  6. Centos6.5命令行快捷键

    ctrl+a打开一个新的终端 ctrl+l 清除屏幕内容 ctrl+a 切换到命令行开始ctrl+e 切换到命令行末尾ctrl+u 剪切光标之前的内容ctrl+k 剪切光标之后的内容 Ctrl+-&g ...

  7. poj 1517 u Calculate e(精度控制+水题)

    一.Description A simple mathematical formula for e is e=Σ0<=i<=n1/i! where n is allowed to go t ...

  8. Python:easygui的安装、导入、使用、设置

    转于:https://blog.csdn.net/sinat_37390744/article/details/55211652 博主:钏的博客 一.下载安装 1)下载0.96的easygui.htt ...

  9. unittest 执行测试脚本输出测试报告

    import unittestimport HTMLTestRunnertest as HTMLTestRunner#获取路径path = './'#创建测试套件,读取测试脚本suite = unit ...

  10. JVM插庄之二:Java agent基础原理

    javaagent 简介 Javaagent 只要作用在class被加载之前对其加载,插入我们需要添加的字节码. Javaagent面向的是我们java程序员,而且agent都是用java编写的,不需 ...