Как обрабатывать узлы из XMLTextReader из сетевого потока по мере их получения (фрагмент за раз)?

У меня есть устройство, которое общается через постоянный сокет TCP с использованием XML. Команды отправляются ему в XML-структуре, а ответы возвращаются в XML-форме. Устройство выводит открытый корневой элемент, такой как <OurProtocol> когда соединение установлено. Каждый ответ на команды или запрос будет возвращать уникальные фрагменты XML. У меня есть следующий код для разбора потока на узлы с XMLTextReader,

deviceClient.Connect(ipRemoteEndPoint);
deviceStream = deviceClient.GetStream();

XmlTextReader reader = null;
reader = new XmlTextReader(deviceStream);
while (reader.Read())
{
   switch (reader.NodeType)
   {
      case XmlNodeType.Element: // The node is an Element.
      ....
   }
}

Я планировал создать конечный автомат для обработки узлов по мере их обнаружения; с конечным пунктом назначения в классы данных C# для потребления основной программой. Существует ли существующая технология.NET, которая может обрабатывать узлы и избавлять меня от конечных автоматов ручного кодирования для обработки возвращенных фрагментов XML?

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

0 ответов

Другие вопросы по тегам