Обработка различных XML-документов ответов с помощью одного обработчика SAX - PullRequest
1 голос
/ 18 октября 2010

Я разрабатываю приложение Java, которое отправляет HTTP-запрос веб-службе, и возвращается XML. Если код ответа равен 200, то метод обратного вызова requestSucceeded () отправит XML в SAXParser с другим обработчиком SAX, в зависимости от того, какая веб-служба вызывается. Если код ответа не равен 200, то вызывается метод обратного вызова requestFailed ().

Веб-служба, которую я вызываю, возвращает два типа документов XML (с кодом ответа 200): документ XML, содержащий информацию об успешном ответе, или документ ошибки XML, содержащий информацию об ошибке (например, если параметры запроса были отформатированы неправильно).

Мой вопрос таков: учитывая мои текущие настройки, как лучше всего искать / обрабатывать оба вида документов XML (успешный ответ XML или документ с ошибкой XML)? Обработчик SAX ищет всю необходимую информацию ответа и сохраняет эту информацию в объекте, который затем обрабатывается моим приложением. Есть ли лучшее решение, чем просто всегда сначала искать уникальные теги XML Error?

Спасибо!

1 Ответ

1 голос
/ 19 октября 2010

Вариант № 1 - Изменить код Respose

Почему вы возвращаете ошибку с кодом ответа 200? 400 (неправильный запрос) или другой код ошибки может быть лучшим вариантом. Затем вы можете обработать XML на основе кода ответа.

Вариант № 2 - Обмен обработчиками содержимого

Ниже приведена ссылка на один из моих предыдущих ответов, где я объясняю, как поменять местами обработчики содержимого при обработке документа. У вас может быть один обработчик содержимого, который определяет, является ли ответ содержимым или ошибкой, а затем заменяет соответствующий обработчик содержимого для обработки остальных.

Вариант № 3 - Использовать JAXB

Если конечный результат заключается в том, что XML будет преобразован в объект, вы рассматривали возможность использования JAXB? Он будет строить объект на основе XML на основе того, что возвращается.

...