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 に答える