read leer from ejemplo c# xml-parsing xmltextreader

c# - leer - xmlreader java



Forma rápida de obtener el número de elementos en un documento xml (2)

Ciertamente puede simplemente leer el documento dos veces, una para simplemente contar los elementos (siga usando XmlReader.ReadToFollowing por ejemplo, (o posiblemente ReadToNextSibling ) aumentando un contador a medida que ReadToNextSibling :

int count = 0; while (reader.ReadToFollowing(name)) { count++; }

Sin embargo, eso significa leer el archivo dos veces ...

Una alternativa es encontrar la longitud del archivo, y mientras lee el archivo una vez , informe el porcentaje del archivo procesado hasta el momento, según la posición de la transmisión subyacente. Esto será menos preciso, pero mucho más eficiente. Tendrá que crear el XmlReader directamente desde un Stream para que pueda seguir revisando la posición.

¿Existe una mejor práctica para obtener la cantidad de elementos de un documento XML para los informes de progreso? Tengo un archivo XML de 2 GB que contiene los vuelos que necesito procesar y mi idea es obtener primero el número de todos los elementos en el archivo y luego usar un contador para mostrar x de x los vuelos se importan a nuestra base de datos.

Para el procesamiento de archivos estamos utilizando XmlTextReader en .NET (C #) para obtener los datos sin leer todo el documento en la memoria (similar al sax parsing).

Entonces la pregunta es, ¿cómo puedo obtener el número de esos elementos muy rápido ... hay una mejor práctica o debería pasar primero por todo el documento y hacer algo como i ++; ?

¡Gracias!


int count = 0; using (XmlReader xmlReader = new XmlTextReader(new StringReader(text))) { while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name.Equals("Flight")) count++; } }