Как передать результат из httpget в SAX-парсер - PullRequest
0 голосов
/ 22 апреля 2011

Я хочу сделать запрос к 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 Ответ

1 голос
/ 22 апреля 2011

Объект SAXParser может принимать входной поток и обработчик. Так что-то вроде:

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

Метод getContent () возвращает и вводит поток из HttpRequest, а объект XMLParser - это просто класс, который я создал (предположительно) и который содержит определение того, как анализировать XML.

EDIT * Вы действительно должны прочитать весь API для SAXParser, у него есть несколько перегруженных методов:

void parse (InputSource is, DefaultHandler dh) Выполните синтаксический анализ содержимого InputSource как XML с помощью указанного DefaultHandler.

void parse (InputSource is, HandlerBase hb) Разбор содержимого данного InputSource как XML с использованием указанной HandlerBase.

void parse (InputStream is, DefaultHandler dh) Анализировать содержимое данного экземпляра InputStream как XML, используя указанный DefaultHandler.

void parse (InputStream is, DefaultHandler dh, String systemId) Анализировать содержимое данного экземпляра InputStream как XML, используя указанный DefaultHandler.

void parse (InputStream is, HandlerBase hb) Анализировать содержимое данного экземпляра InputStream как XML с использованием указанной HandlerBase.

void parse (InputStream is, HandlerBase hb, String systemId) Анализировать содержимое данного экземпляра InputStream как XML с использованием указанной HandlerBase.

Некоторые методы принимают InputSource, некоторые принимают InputStream, как я уже говорил ранее.

...