Java URL 访问远程地址 得到xml数据-
通过Java获取Google的简单天气预报
先保存文件。再读文件。不然有编码转换的异常..再找好的方法。
http://www.google.com/ig/api?hl=zh_cn&weather=shanghai
注意weather那写入城市的拼音转化一下就行打开之后是XML格式的然后再提取。
代码如下:
package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.MalformedURLException; import java.net.URL; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /*** * 通过Java获取Google的简单天气预报 * @author wei * */ public class WeatherReport { /*** * * @param city 城市拼音:上海,shanghai * @return 例如:可能有暴风雨,23℃-29℃ */ public static String getweather(String city) { try { URL ur = new URL("http://www.google.com/ig/api?hl=zh_cn&weather=" + city); InputStream instr = ur.openStream(); String s, str; BufferedReader in = new BufferedReader(new InputStreamReader(instr)); StringBuffer sb = new StringBuffer(); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("weather.txt"), "utf-8")); while ((s = in.readLine()) != null) { sb.append(s); } str = new String(sb); out.write(str); out.close(); in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } File f = new File("weather.txt"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); String str = null; try { DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(f); NodeList nl = (NodeList) doc.getElementsByTagName("forecast_conditions"); NodeList n2 = nl.item(0).getChildNodes(); str = n2.item(4).getAttributes().item(0).getNodeValue() + "," + n2.item(1).getAttributes().item(0).getNodeValue() + "℃-" + n2.item(2).getAttributes().item(0).getNodeValue() + "℃"; } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return str; } public static void main(String[] args) { String str = WeatherReport.getweather("zhuzhou"); System.out.println(str); } }
浙公网安备 33010602011771号