Как разобрать XML (Fogbugz XML API)?

1

Я создаю приложение для Android, которое подключается к XML-интерфейсу Fogbugz (отправляет запрос 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();
    } 
  • 0
    что вы хотите достичь с помощью этого кода?
  • 0
    Сейчас я просто создаю и отображаю строку, чтобы убедиться, что HTTP-запрос работает правильно. По завершении этого конкретного кода нужно просто войти в систему fogbugz и получить доступ к XML-файлу, который содержит токен. Однако в том же сервисе я буду использовать этот токен для создания, редактирования или удаления дел в FogBugz, и мне потребуется возможность проанализировать возвращенный файл XML для получения конкретной информации.
Показать ещё 1 комментарий
Теги:
fogbugz

1 ответ

3
Лучший ответ

Я предлагаю вам использовать некоторую библиотеку XML DOM, такую ​​как XOM или Dom4j. Вам будет намного легче работать с древовидной структурой, чем с событиями SAX. Лично я использую XOM в Foglyn - FogBugz для плагина Eclipse. Вы можете передать InputStream непосредственно в ваш SAX/XOM/Dom4j парсер, нет необходимости сначала строить строку. Кроме того, убедитесь, что вы используете правильную кодировку... ваш код нарушен в этом отношении. (Когда вы передаете InputStream вашему парсеру, это обрабатывается парсером. В XOM вы можете использовать метод new Builder().build(InputStream)).

Один подсказку API FogBugz... при получении информации о случае, и вам не нужны события (комментарии), не извлекайте их вообще. То есть не помещайте events в список столбцов.

  • 0
    Спасибо за информацию! Строка была просто для проверки, работает ли мой запрос Http, но что вы подразумеваете под моим кодом не работает? У меня мало опыта работы с XML / парсингом, и я не совсем понимаю, что вы имеете в виду.
  • 1
    @ mbauer14: Проблема в том, что вы создаете new InputStreamReader(stream) без указания кодировки символов - при этом будет использоваться так называемая кодировка «по умолчанию» - я понятия не имею, что это будет на Android. Кодировка XML-документов указана в объявлении XML (т. <?xml version="1.0" encoding="utf-8" ?> ), И синтаксические анализаторы XML знают, как ее читать, поэтому вместо преобразования InputStream в Reader самостоятельно следует передать InputStream в ваш анализатор XML напрямую. (Кстати, в документации FogBugz говорится, что он всегда использует UTF-8 при отправке выходных данных для своего XML API)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню