Как анализировать различные XML-файлы с помощью SAX на Android?

1

У меня есть следующий сценарий.

Я отправляю XML файл на сервер в качестве запроса и получаю XML файл как ответ и все это как фоновый поток на Android.

Запрос XML сериализуется с использованием различных значений. Ответ XML затем считывается SAX и помещается в список. Весь процесс запроса/ответа происходит в фоновом потоке с использованием класса AsyncTask.

Проблема в том, что у меня есть разные типы ответов, и я понятия не имею, какой подход взять для анализа ответа на основе отправленного запроса.

Как сказать Android использовать парсер A на основе запроса A и парсера B на основе запроса B?

EDIT: С разными типами ответов я имею в виду, что XML файл выглядит иначе. Он имеет разные теги и различные атрибуты.

Теги:
parsing
sax

2 ответа

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

Вот варианты, которые я вижу:

  • Вы можете основывать возможности синтаксического анализа на основе запроса (который должен иметь какой-то контекст). Если вы знаете, что запрос - это тип A, то вы знаете, что ответ ДОЛЖЕН использовать парсер А.
  • У вас может быть общий синтаксический анализатор для всех типов и разветвление того, что происходит в синтаксическом анализаторе, на основе первого известного тега или атрибута, который диктует, что нужно делать.
  • Сначала проанализируйте, проанализируйте после. Возьмите все элементы ответа и постройте из них графические объекты или объекты. Пропустите их, измените их, если это необходимо для вашего приложения (не пытайтесь редактировать xml - вы все это разбираете, и вы хотите, чтобы это закончилось как можно скорее).

Удачи!

  • 0
    Спасибо за Ваш ответ. Ваш последний вариант кажется довольно интересным. Есть ли способ добиться этого с помощью парсера SAX?
  • 0
    Конечно, любое начальное / конечное событие элемента может быть использовано для определения границ объекта.
1

все объекты ответа сообщения, укажите атрибут для указания и тип объекта в ответе xml

<response>
<error/>
<data type="A">
</data>
</response>

<response>
<error/>
<data type="B">
</data>
</response>
  • 0
    Единственная проблема у меня в том, что я не могу изменить XML.
  • 0
    затем проанализируйте xml для определенного дифференциатора и затем разветвите код на это значение.

Ещё вопросы

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