2011-04-22 61 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