0

我想向 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();

这是执行此操作的正确方法吗?如何连接两个代码。

提前致谢

4

1 回答 1

1

SAXParser 对象可以接收输入流和处理程序。所以像:

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

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

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

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

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

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

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

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

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

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

于 2011-04-22T18:49:35.357 回答