新浪天气api

package com.smartdot.dcu;/** * java获取新浪天气预报代码 */ import java.io.FileNotFoundEx
package com.smartdot.dcu;/** * java获取新浪天气预报代码 */  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.FileInputStream;  
import java.io.UnsupportedEncodingException;  
import java.net.MalformedURLException;  
import java.net.URL;  
import java.net.URLEncoder;  
import java.util.HashMap;  
import java.util.Map;  import javax.xml.parsers.DocumentBuilder;  
import javax.xml.parsers.DocumentBuilderFactory;  
import javax.xml.parsers.ParserConfigurationException;  import org.w3c.dom.Document;  
import org.w3c.dom.Element;  
import org.w3c.dom.Node;  
import org.w3c.dom.NodeList;  
import org.xml.sax.SAXException;  /** * 解析xml文档,包括本地文档和url * */  
public class CommonsWeatherUtils {  InputStream inStream;  Element root;  public InputStream getInStream() {  return inStream;  }  public void setInStream(InputStream inStream) {  this.inStream = inStream;  }  public Element getRoot() {  return root;  }  public void setRoot(Element root) {  this.root = root;  }  public CommonsWeatherUtils() {  }  /** * 通过输入流来获取新浪接口信息 * @param inStream */  public CommonsWeatherUtils(InputStream inStream) {  if (inStream != null) {  this.inStream = inStream;  DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();  try {  DocumentBuilder domBuilder = domfac.newDocumentBuilder();  Document doc = domBuilder.parse(inStream);  root = doc.getDocumentElement();  } catch (ParserConfigurationException e) {  e.printStackTrace();  } catch (SAXException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }  }  public CommonsWeatherUtils(String path) {  InputStream inStream = null;  try {  inStream = new FileInputStream(path);  } catch (FileNotFoundException e1) {  e1.printStackTrace();  }  if (inStream != null) {  this.inStream = inStream;  DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();  try {  DocumentBuilder domBuilder = domfac.newDocumentBuilder();  Document doc = domBuilder.parse(inStream);  root = doc.getDocumentElement();  } catch (ParserConfigurationException e) {  e.printStackTrace();  } catch (SAXException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }  }  public CommonsWeatherUtils(URL url) {  InputStream inStream = null;  try {  inStream = url.openStream();  } catch (IOException e1) {  e1.printStackTrace();  }  if (inStream != null) {  this.inStream = inStream;  DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();  try {  DocumentBuilder domBuilder = domfac.newDocumentBuilder();  Document doc = domBuilder.parse(inStream);  root = doc.getDocumentElement();  } catch (ParserConfigurationException e) {  e.printStackTrace();  } catch (SAXException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }  }  /** *  * @param nodes * @return 单个节点多个值以分号分隔 */  public Map getValue(String[] nodes) {  if (inStream == null || root==null) {  return null;  }  Map map = new HashMap();  // 初始化每个节点的值为null  for (int i = 0; i < nodes.length; i++) {  map.put(nodes[i], null);  }  // 遍历第一节点  NodeList topNodes = root.getChildNodes();  if (topNodes != null) {  for (int i = 0; i < topNodes.getLength(); i++) {  Node book = topNodes.item(i);  if (book.getNodeType() == Node.ELEMENT_NODE) {  for (int j = 0; j < nodes.length; j++) {  for (Node node = book.getFirstChild(); node != null; node = node.getNextSibling()) {  if (node.getNodeType() == Node.ELEMENT_NODE) {  if (node.getNodeName().equals(nodes[j])) {  String val = node.getTextContent();  String temp = map.get(nodes[j]);  if (temp != null && !temp.equals("")) {  temp = temp + ";" + val;  } else {  temp = val;  }  map.put(nodes[j], temp);  }  }  }  }  }  }  }  return map;  }  public String getWeather(String address){String weathers = "";String addressGBK = "";try {addressGBK = URLEncoder.encode(address, "GBK");} catch (UnsupportedEncodingException e2) {e2.printStackTrace();}String link = "http://php.weather.sina.com.cn/xml.php?city="+addressGBK+"&password=DJOYnieT8234jlsK&day=0";URL url;  try {  url = new URL(link);  CommonsWeatherUtils parser = new CommonsWeatherUtils(url); //    城市   白天天气,白天温度,夜晚天气,夜晚温度,白天风向,白天风力,夜晚风向,夜晚风力,污染指数,污染扩散指数String[] nodes = {"city","status1","temperature1","status2","temperature2","direction1","power1","direction2","power2","pollution_l","pollution_s"};  Map map = parser.getValue(nodes);  System.out.println(map.get(nodes[0])+" 今天白天:"+map.get(nodes[1])+" 最高温度:"+map.get(nodes[2])+"℃ 今天夜间:"+map.get(nodes[3])+" 最低温度:"+map.get(nodes[4])+"℃ "+map.get(nodes[5])+map.get(nodes[6])+map.get(nodes[7])+map.get(nodes[8])+map.get(nodes[9])+map.get(nodes[10]));weathers = map.get(nodes[0])+" 今天白天:"+map.get(nodes[1])+" 最高温度:"+map.get(nodes[2])+"℃ 今天夜间:"+map.get(nodes[3])+" 最低温度:"+map.get(nodes[4])+"℃ ";} catch (MalformedURLException e) {  e.printStackTrace();  } return weathers;}public static void main(String[] args) { CommonsWeatherUtils cwu = new CommonsWeatherUtils();System.out.println(cwu.getWeather("大连"));//String link="http://php.weather.sina.com.cn/xml.php?city=%D6%D8%C7%EC&password=DJOYnieT8234jlsK&day=0";  //String link = "http://php.weather.sina.com.cn/search.php?city=%B4%F3%C1%AC&dpc=1";
//      String link = "http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0";
//        try {  
//            System.out.println(URLEncoder.encode("北京", "GBK"));  
//        } catch (UnsupportedEncodingException e1) {  
//            // TODO Auto-generated catch block  
//            e1.printStackTrace();  
//        }  
//          
//        URL url;  
//          
//        try {  
//              
//            url = new URL(link);  
//            CommonsWeatherUtils parser = new CommonsWeatherUtils(url);  
//            String[] nodes = {"city","status1","temperature1","status2","temperature2"};  
//            Map map = parser.getValue(nodes);  
//            System.out.println(map.get(nodes[0])+" 今天白天:"+map.get(nodes[1])+" 最高温度:"+map.get(nodes[2])+"℃ 今天夜间:"+map.get(nodes[3])+" 最低温度:"+map.get(nodes[4])+"℃ ");  
//        } catch (MalformedURLException e) {  
//            e.printStackTrace();  
//        }  }  
}