1

Fogbugz XML API に接続する Android アプリケーションを作成しています (API にリクエストを送信し、XML ファイルを受信します)。現在、これらのリクエストを処理し、使用可能な情報にアクセスするためにそれぞれを解析するサービスを作成しています。これを行う最良の方法は何ですか?inputStream を取得している場合、SAX パーサーを使用する必要がありますか?

        DefaultHttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet("My URL THAT RETURNS AN XML FILE"); 
    HttpResponse response;
    try {
            response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity(); 
            InputStream stream =  entity.getContent();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); 
            String responseString = "";
            String temp;

            while ((temp=bufferedReader.readLine()) != null)
            {
                responseString += temp;
            }

            if (entity != null) { 
                entity.consumeContent(); 
            }

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
4

1 に答える 1

3

XOM や Dom4j などの XML DOM ライブラリを使用することをお勧めします。SAX イベントよりもツリー構造の方がはるかに簡単に作業できます。個人的には、Foglyn で XOM (Eclipse プラグイン用の FogBugz) を使用しています。InputStream を SAX/XOM/Dom4j パーサーに直接渡すことができます。最初に文字列を構築する必要はありません。さらに、正しいエンコーディングを使用していることを確認してください...この点でコードが壊れています。(InputStream をパーサーに渡すと、これはパーサーによって処理されます。XOM ではnew Builder().build(InputStream)メソッドを使用できます)。

FogBugz API の 1 つのヒント ... ケースに関する詳細を取得するときに、イベント (コメント) が必要ない場合は、それらをまったく取得しないでください。eventsつまり、列のリストに入れないでください。

于 2010-07-28T14:48:38.993 に答える