当前位置:编程学习 > JAVA >>

使用java获取未来7天天气信息,可用于android

环境:eclipsse, jdk1.6, 没有使用第三方的包,都是JDK有的。
 
项目结构如下:
 
1.获取天气预报的类
WeatherUtil.java
 
[java] 
package com.siqi.weather;  
  
import java.io.File;  
import java.util.ArrayList;  
import java.util.Calendar;  
import java.util.Hashtable;  
import java.util.List;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
import javax.xml.parsers.DocumentBuilderFactory;  
import javax.xml.transform.OutputKeys;  
import javax.xml.transform.Transformer;  
import javax.xml.transform.TransformerFactory;  
import javax.xml.transform.dom.DOMSource;  
import javax.xml.transform.stream.StreamResult;  
  
import org.w3c.dom.Document;  
import org.w3c.dom.Element;  
import org.w3c.dom.NodeList;  
  
/** 
 * 中国气象频道手机版("http://m.weathercn.com")获取天气信息, 因为手机版网页内容小,访问速度快。 
 *  
 * @author siqi 
 *  
 */  
public class WeatherUtil {  
  
    /** 
     * 省份页面(省) 
     */  
    public static final String PROVINCE_URL = "http://m.weathercn.com/common/province.jsp";  
    /** 
     * 城市页面(市)<br/> 
     * pid=%s中%s表示城市编号 例:http://m.weathercn.com/common/dis.do?pid=010101 
     */  
    public static final String DISTRICT_URL = "http://m.weathercn.com/common/dis.do?pid=%s";  
    /** 
     * 县区页面(区)<br/> 
     * did=%s中%s表示县区编号<br/> 
     * pid=%s中%s表示城市编号<br/> 
     * 例:http://m.weathercn.com/common/cout.do?did=01010101&pid=010101 
     */  
    public static final String COUNTY_URL = "http://m.weathercn.com/common/cout.do?did=%s&pid=%s";  
    /** 
     * 7天天气预报页面<br/> 
     * cid=%s中%s表示区编号<br/> 
     * 例:http://m.weathercn.com/common/7d.do?cid=0101010110 
     */  
    public static final String REPORT7_URL = "http://m.weathercn.com/common/7d.do?cid=%s";  
    /** 
     * 生活指数页面<br/> 
     * cid=%s中%s表示区编号 
     */  
    public static final String REPORT_MORE_URL = "http://m.weathercn.com/common/zslb.do?cid=%s";  
  
    /** 
     * 保存城市编码信息的xml文档<br/> 
     * 保存了具体的区县和区县所对应的编码,例如<br/> 
     * <county><br/> 
     * <name>北京</name><br/> 
     * <code>0101010110</code><br/> 
     * </county> 
     */  
    public static final String XML_FILE = "./weathercn.xml";  
  
    private List<WeatherReport> weatherReportList = new ArrayList<WeatherReport>();  
  
    /** 
     * 启动的时候,首先检查weathercn.xml是否存在,如果不存在的话,重新从m.weathercn.com获取, 
     * 只有第一次的时候会获取。 
     */  
    static {  
        try {  
            prepareXML();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
    /** 
     * 返回指定城市,指定日期的天气预报。<br/> 
     *  
     * @param city 
     *            城市,如"北京"。 
     * @param cal 
     *            日期。 
     * @return 如果城市正确,并且日期在7天以内,那么返回天气信息。否则返回null。 
     */  
    public WeatherReport getWeatherReport(String city, Calendar cal) {  
        String dateStr = cal.get(Calendar.MONTH) + "月"  
                + cal.get(Calendar.DAY_OF_MONTH) + "日";  
        return getWeatherReport(city, dateStr);  
    }  
  
    /** 
     * 返回指定城市,指定日期的天气预报。<br/> 
     *  
     * @param city 
     *            城市,如"北京"。 
     * @param date 
     *            日期,格式为"1月20日"。 
     * @return 如果城市正确,并且日期在7天以内,那么返回天气信息。否则返回null。 
     */  
    public WeatherReport getWeatherReport(String city, String date) {  
        for (WeatherReport report : getWeatherReports(city)) {  
            if (report.getDate().equals(date)) {  
                return report;  
            }  
        }  
  
        return null;  
    }  
  
    /** 
     * 返回指定城市的天气预报(7天内) 
     *  
     * @param city 
     * @return 返回指定城市的天气预报(7天内),如果指定的城市错误,返回空的list,list.size()=0 
     */  
    public List<WeatherReport> getWeatherReports(String city) {  
        List<WeatherReport> list = new ArrayList<WeatherReport>();  
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,