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

我建议您使用一些 XML DOM 库,例如 XOM 或 Dom4j。使用树结构比使用 SAX 事件要容易得多。就个人而言,我在 Foglyn 中使用 XOM -- FogBugz for Eclipse 插件。您可以将 InputStream 直接传递给您的 SAX/XOM/Dom4j 解析器,无需先构建字符串。此外,请确保您使用正确的编码......您的代码在这方面被破坏了。(当您将 InputStream 传递给解析器时,这将由解析器处理。在 XOM 中您可以使用new Builder().build(InputStream)方法)。

一个 FogBugz API 提示......当获取有关案例的详细信息并且您不需要事件(评论)时,根本不要获取它们。即不要放入events列列表中。

于 2010-07-28T14:48:38.993 回答