我想向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();
这是执行此操作的正确方法吗?如何连接这两个代码。
提前致谢
答案 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,如前所述。