2011-04-22 59 views
0

我想提出一個要求谷歌API並通過生成的XML這裏SAX解析器均碼...我如何通過結果從HTTPGET到SAX解析器

首先請求:

HttpClient hclient = new DefaultHttpClient(); 
HttpGet get = new HttpGet("http://www.google.com/ig/api?weather=Cardiff"); 

HttpResponse hrep = hclient.execute(get); 
HttpEntity httpEntity = hrep.getEntity(); 

然後解析器:

SAXParserFactory saxpf = SAXParserFactory.newInstance(); 
SAXParser saxp = saxpf.newSAXParser(); 
XMLReader xr = saxp.getXMLReader(); 
ExHandler myHandler = new ExHandler(); 
xr.setContentHandler(myHandler); 
xr.parse(); 

這是做到這一點的正確方法和如何連接兩個代碼。

在此先感謝

回答

1

SAXParser對象可以接受輸入流和處理程序。因此,像:

SAXParser saxParser = factory.newSAXParser(); 
XMLParser parser = new XMLParser(); 
saxParser.parse(httpEntity.getContent(),parser); 

的的getContent()方法返回,並從HttpRequest的輸入流,XMLParser的對象就是我創建了(據說),它包含了如何解析XML定義一個類。

編輯* 你真的應該閱讀的SAXParser整個API,它有幾個重載方法:

無效解析(InputSource的是,DefaultHandler的DH) 解析使用給定的InputSource作爲XML內容指定了DefaultHandler。

void parse(InputSource is,HandlerBase hb) 使用指定的HandlerBase將給定InputSource的內容解析爲XML。

空隙解析(InputStream爲,的DefaultHandler DH) 解析使用指定的DefaultHandler將給定的InputStream實例的內容爲XML。

空隙解析(InputStream爲,的DefaultHandler DH,字符串的systenId) 將給定InputStream實例作爲XML的使用指定的DefaultHandler的內容。

空隙解析(InputStream爲,的HandlerBase HB) 解析使用指定的HandlerBase將給定的InputStream實例的內容爲XML。

空隙解析(InputStream爲,的HandlerBase HB,字符串的systenId) 將給定InputStream實例作爲XML的使用指定的HandlerBase的內容。

一些方法需要一個InputSource,一些採用InputStream,正如前面所述。

+0

它仍然不工作,根據日食解析方法在一個InputSource中,有沒有辦法將httpEntity轉換爲輸入源? – Amanni 2011-04-22 19:59:19

+0

基本上,我只需要知道如何將來自http請求的響應傳遞給解析器 – Amanni 2011-04-22 20:10:58