Как обрабатывать узлы из 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, поскольку источником данных является не полная строка или файл, а сетевой поток.