XML stream

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
В соответствии с принятыми в данной вики договорённостями, правильное название этой статьи — XML-поток.
Для ссылок сюда с других страниц
ЯВики используйте название
XML-поток
На других ресурсах
можно также давать ссылку
http://jawiki.ru/XML_stream

Способ обмена данными между двумя сущностями по протоколу XMPP. Представляет собой нечто вроде незаконченного XML-документа, в который по мере обмена данными дописываются стансы.

Спецификация

Понятие «XML-поток» описано в Основах XMPP.

XML-поток состоит из корневого элемента <stream/> и его дочерних элементов (в том числе стансов). Количество стансов в потоке не ограничено. Закрытие элемента <stream/> однозначно сигнализирует о закрытии XML-потока.

Чтобы просматривать XML-потом в xmpp-клиенте (обычно в целях отладки и поиска неисправностей) используется консоль XML.

Особенности работы

Не всякий XML-парсер (программное средство для работы с данными в XML) пригоден для работы с XML-потоками. Во-первых, незакрытый поток не является правильным (валидным) XML-документом. Во-вторых, в отличие от работы с XML-документом, нет необходимости держать в памяти узлы (стансы), пришедшие ранее — они уже обработаны.

Таким образом, для работы с XML-потоками больше подходят так называемые событийные XML-парсеры. Они собирают данные из входного потока, и сигнализируют всякий раз, когда набирается завершенный элемент — станс.

ToDo: примеры событийных XML-парсеров

См. также