获取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. 维度表, 事实表, 数据仓库, BI...

    以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进 ...

  2. Linux中redis主从配置

    假设要在6380开启redis 1.添加配置文件:复制redis.conf为redis_6380.conf 2.修改配置文件:修改redis_6380.conf中port.pidfile 3.防火墙: ...

  3. 一个很有参考意义的unity博客

    http://blog.csdn.net/lyh916/article/details/45133101

  4. ES提高数据压缩的设置——单字段,去掉source和all

    curl -XPUT 'http://localhost:9200/hec_test3' -d ' { "mappings": { "hec_type3": { ...

  5. MFC动态创建

    每个继承自CObject的对象并不会有与之对应的CRuntimeClass与之对应,除非使用了宏DECLARE_DYNAMIC\DECLARE_DYNCREATE\DECLARE_SERIAL. 这三 ...

  6. linux命令学习笔记(20):find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作, 这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...

  7. torch7 安装中Missing dependencies for nn:moses >= 1错误解决办法

    Torch7.0安装步骤(默认安装路径是在home下): git clone https://github.com/torch/distro.git ~/torch --recursive cd ~/ ...

  8. git克隆某一个branch

    git clone -b <branch> <remote_repo> 例如: git clone -b 指定的分支名字

  9. 如果你使用WebView+FloatingActionButton

    在WebView中想要使用FAB,如果你想向上滑动的时候隐藏FAB,那么需要再WebView外面套一个ScrollView! 原因之前也分析过,和为什么ListView不能让ToolBar.Tab隐藏 ...

  10. do-while-zero 结构在宏定义中的应用

    do while 语句在使用宏定义时是一个有用的技巧,说明如下: 假设有这样一个宏定义 #define macro(condition) / if(condition) dosomething() 现 ...