У меня есть TCP-соединение, которое отправляет мне XML-сообщения через поток.
Первое сообщение, которое я получаю в сообщении <?xml version="1.0" encoding="utf-8"?>
.
Второе - это сообщение с запросом аутентификации, которое предоставляет начальное значение для использования при хешировании моих учетных данных для отправки обратно на сервер - <session seed="VJAWKBJXJO">
.
На данный момент я должен отправить сообщение <session user="admin" password_hash="123456789">
для аутентификации.
После аутентификации я получу необходимые данные в виде <Msg>data</Msg>
.
Если я вовремя не аутентифицируюсь на сервере, я получаю сообщение </session>
, указывающее, что сессия была закрыта.
Проблема в том, что я не могу использовать анализатор DOM, потому что попытка синтаксического анализа тега <session>
без конечного тега всегда выдает ошибку, поэтому я пытаюсь использовать синтаксический анализатор Xerces-c SAX для выполнения прогрессивного парсинг XML.
Когда я получаю каждое сообщение, я в идеале хочу добавить его в MemBufInputSource
, который содержит весь XML, который был получен в настоящее время, а затем выполнить parseNext
в буфере для анализа нового полученного XML, но я не могу понять, как заставить его работать правильно.
Есть ли лучший способ обойти эту проблему? Возможно, просто использовать специальный случай для <session></session>
сообщений?
Спасибо