package org.main; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.zip.GZIPInputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Demo { public static GZIPInputStream getReponse(String _url) throws ClientProtocolException, IOException { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(_url); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); InputStream inputs=entity.getContent(); GZIPInputStream in = new GZIPInputStream(inputs); return in; } @SuppressWarnings("rawtypes") public static void main(String[] args) throws Exception { Map<String, String> map = new HashMap<String, String>(); SAXReader reader = new SAXReader(); Document document = reader.read(getReponse("http://wthrcdn.etouch.cn/WeatherApi?city=%E9%95%BF%E6%98%A5")); // 得到xml根元素 Element root = document.getRootElement(); // 得到根元素的所有子节点 List<Element> elementList = root.elements(); Iterator forecast = root.elementIterator("forecast"); if (forecast.hasNext()) { Element recordEless = (Element) forecast.next(); Iterator weather = recordEless.elementIterator("weather"); Element weatherNode = (Element) weather.next(); System.out.println(); System.out.println("date" + ":" + weatherNode.elementTextTrim("date")); System.out.println("high" + ":" + weatherNode.elementTextTrim("high")); System.out.println("low" + ":" + weatherNode.elementTextTrim("low")); Iterator weatherNodeChild = weatherNode.elementIterator("day"); Element dayNode = (Element) weatherNodeChild.next(); System.out.println(); System.out.println("type" + ":" + dayNode.elementTextTrim("type")); System.out.println("fengxiang" + ":" + dayNode.elementTextTrim("fengxiang")); System.out.println("fengli" + ":" + dayNode.elementTextTrim("fengli")); } Iterator zhishus = root.elementIterator("zhishus"); while(zhishus.hasNext()) { Element zhishusNode = (Element) zhishus.next(); Iterator zhishu = zhishusNode.elementIterator("zhishu"); while(zhishu.hasNext()) { Element zhishuNode = (Element) zhishu.next(); System.out.println(); System.out.println("name" + ":" + zhishuNode.elementTextTrim("name")); System.out.println("value" + ":" + zhishuNode.elementTextTrim("value")); System.out.println("detail" + ":" + zhishuNode.elementTextTrim("detail")); } } } }
最近給一個公眾平台做一個天氣查詢的功能,原理就是從介面取得資料然後回傳給使用者。這裡使用的介面回傳的是xml類型的資料。於是使用dom4j解析。
本來想著使用Document document = reader.read();
然後他的參數是一個input流,就想著如何把get請求到的resp
然後他的參數是一個input流,就想著如何把get請求到的resp為流,資料上網查了一些相關,發現比較扯,,,自己搞吧... 先從HttpGet httpget = new HttpGet(_url); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); InputStream inputs=entity.getContent();
GZIPInputStream in = new GZIPInputStream(inputs);
本文出自“TheAuroraSec” 博客,請務必保留此出處http://aurorasec.blog.51cto.com/9752323/1859599