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

发布于 2024-11-03 08:10:53 字数 614 浏览 1 评论 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();

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

提前致谢

I'm want to make a request to google API and pass the resulting XML to SAX parser here are both codes...

First the request:

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();

Then the parser:

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

Is this the right way to do this and how do I connect both codes.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

短暂陪伴 2024-11-10 08:10:53

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。

The SAXParser object can take in an input stream and the handler. So something like:

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

The getContent() method returns and input stream from the HttpRequest, and the XMLParser object is just a class I created (supposedly) that contains the definition of how to parse the XML.

EDIT*
You really should read the entire API for SAXParser, it has several overloaded methods:

void parse(InputSource is, DefaultHandler dh)
Parse the content given InputSource as XML using the specified DefaultHandler.

void parse(InputSource is, HandlerBase hb)
Parse the content given InputSource as XML using the specified HandlerBase.

void parse(InputStream is, DefaultHandler dh)
Parse the content of the given InputStream instance as XML using the specified DefaultHandler.

void parse(InputStream is, DefaultHandler dh, String systemId)
Parse the content of the given InputStream instance as XML using the specified DefaultHandler.

void parse(InputStream is, HandlerBase hb)
Parse the content of the given InputStream instance as XML using the specified HandlerBase.

void parse(InputStream is, HandlerBase hb, String systemId)
Parse the content of the given InputStream instance as XML using the specified HandlerBase.

Some of the methods take an InputSource, some take an InputStream, as I stated earlier.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文