Estoy escribiendo un servidor de red en C# .NET 4.0. Hay una conexión TCP/IP de red sobre la cual puedo recibir elementos XML completos. Llegan regularmente y necesito procesarlos inmediatamente. Cada elemento XML es un documento XML completo en sí mismo, por lo que tiene un elemento de apertura, varios nodos secundarios y un elemento de cierre. No hay un único elemento raíz para toda la secuencia. Así que cuando abra la conexión, lo que se ve es la siguiente:Leer elementos completos de una secuencia de red XML
<status>
<x>123</x>
<y>456</y>
</status>
A continuación, un poco más tarde que sigue:
<status>
<x>234</x>
<y>567</y>
</status>
Y así sucesivamente. Necesito una forma de leer la cadena XML completa hasta que se complete un elemento de estado. No quiero hacer eso con métodos de lectura de texto sin formato porque no sé en qué formato llegan los datos. De ninguna manera puedo esperar hasta que se termine toda la secuencia, como se describe a menudo en otra parte. He intentado usar la clase XmlReader pero su documentación es extraña, los métodos no funcionan, el primer elemento se pierde y después de enviar el segundo elemento, se produce una XmlException porque hay dos elementos raíz.
dudo XmlReader es el camino a seguir, ya que se puede esperar de un elemento raíz y no se preparaban para la transmisión continuamente elementos XML. Por lo general, al manejar conexiones basadas en sockets, estaría escuchando la conexión y buscando identificar el inicio y el final de cada fragmento de datos.Sé que dijiste que no querías, pero esperaba que tendrías que usar métodos de lectura de texto sin formato para, al menos, identificar un fragmento de XML que luego puedas analizar. –
necesita crear una instancia de un nuevo lector en cada mensaje, donde el mensaje es un nodo completo. –