Чтение целых элементов из сетевого потока XML

Я пишу сетевой сервер на C # .NET 4.0. Есть сетевое TCP / IP-соединение, по которому я могу получать полные XML-элементы. Они приходят регулярно, и мне нужно их немедленно обработать. Каждый XML-элемент сам по себе является законченным XML-документом, поэтому он имеет открывающий элемент, несколько подузлов и закрывающий элемент. Для всего потока нет единого корневого элемента. Итак, когда я открываю соединение, я получаю следующее:

<status>
    <x>123</x>
    <y>456</y>
</status>

Затем через некоторое время это продолжается:

<status>
    <x>234</x>
    <y>567</y>
</status>

И так далее. Мне нужен способ прочитать всю строку XML, пока не будет завершен элемент статуса. Я не хочу делать это с помощью методов чтения обычного текста, потому что я не знаю, в каком формате поступают данные. Я никоим образом не могу дождаться завершения всего потока, как это часто описывается в другом месте. Я пробовал использовать класс XmlReader, но его документация странная, методы не работают, первый элемент теряется, а после отправки второго элемента возникает исключение XmlException, потому что есть два корневых элемента.

6
задан ygoe 21 February 2012 в 13:17
поделиться