如何将结果从httpget传递到SAX解析器

时间:2011-04-22 18:33:47

标签: saxparser http-get google-weather-api

我想向google API发出请求,并将生成的XML传递给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 个答案:

答案 0 :(得分:1)

SAXParser对象可以接受输入流和处理程序。如下所示:

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

getContent()方法从HttpRequest返回并输入流,而XMLParser对象只是我创建的一个类(据称),其中包含如何解析XML的定义。

修改* 你真的应该阅读SAXParser的整个API,它有几个重载的方法:

  

void parse(InputSource是,DefaultHandler dh)             使用指定的DefaultHandler将给定InputSource的内容解析为XML。

     

void parse(InputSource是,HandlerBase hb)             使用指定的HandlerBase将给定InputSource的内容解析为XML。

     

void 解析(InputStream为,DefaultHandler dh)             使用指定的DefaultHandler将给定InputStream实例的内容解析为XML。

     

void parse(InputStream is,DefaultHandler dh,String systemId)             使用指定的DefaultHandler将给定InputStream实例的内容解析为XML。

     

void 解析(InputStream为,HandlerBase hb)             使用指定的HandlerBase将给定InputStream实例的内容解析为XML。

     

void 解析(InputStream是,HandlerBase hb,String systemId)             使用指定的HandlerBase将给定InputStream实例的内容解析为XML。

有些方法采用InputSource,有些采用InputStream,如前所述。