Leer XML con SAX o XmlTextReader

13/01/2004 - 10:18 por revolucion | Informe spam
Hola.
En relación al post puesto por juju estoy tambien
interesado en trabajar con documentos XML de la forma más
eficiente posible en cuanto a memoria se refiere.
Visto lo comentado en ese post ¿quiere decir que
XmlTextReader no funciona como SAX?
Me gustaria saber cual es la forma exacta de trabajar de
la clase XmlTextReader ya que me gustaria implementar una
clase que trabaje con XML y como he comentado antes de la
forma más eficiente posible en cuanto a consumo de memoria.

Un Saludo.
 

Leer las respuestas

#1 Skar
13/01/2004 - 14:55 | Informe spam
Aqui va una comparasion de SAX y el XmlReader
* Al igual que SAX, el XmlReader solo lee de principio a fin (no puede
volver a leer un nodo que ya ha sido parseado).
* Es rapido y no require que pongas el documento en memoria (DOM o Cache)
* Puede leer un documento o un stream
* La mayor diferencia entre SAX y XmlReader es que SAX es un modelo PUSH,
esto quiere decir que el parser te envia (push) informacion cada vez que
encuentra un nodo y tu programa procesa esa informacion.
En cambio XmlReader te brinda un modelo PULL, lo cual quiere decir que tu
jalas/recoges/eliges (perdon por mi poco conocimiento de el espaniol) los
nodos que tu quieres procesar.

Otros beneficios, son administracion de el estado (state management),
abilidad de PULL informacion de no solo un documento sino de varios al mismo
tiempo (algo parecido al XMLFilter en SAX). El SAX puede ser usado con el
XmlReader, pero no alrevez.

Otro beneficio es con relacion a el uso de memoria, por ejemplo en SAX el
parser tiene un buffer (campo de memoria) el cual es usado para poner la
info de los nodos, el siguiente paso es de mover la info de el buffer a un
objeto de tipo string, el cual es pasado a tu programa para ser procesado,
en cambio el XmlReader te permite que tu programa cree el buffer y el parser
escribe la info en este parser.
Y bueno como dije anteriormente, la abilidad de que tu tienes de escoger los
nodos que tu quieres leer y procesar.

:o) Espero que esto sea suficiente, para mas info fijate la documentacion
de .Net

OJO que el XmlReader es algo especifico a Microsoft, no es un standard como
SAX o DOM

"revolucion" wrote in message
news:024101c3d9b6$32680920$
Hola.
En relación al post puesto por juju estoy tambien
interesado en trabajar con documentos XML de la forma más
eficiente posible en cuanto a memoria se refiere.
Visto lo comentado en ese post ¿quiere decir que
XmlTextReader no funciona como SAX?
Me gustaria saber cual es la forma exacta de trabajar de
la clase XmlTextReader ya que me gustaria implementar una
clase que trabaje con XML y como he comentado antes de la
forma más eficiente posible en cuanto a consumo de memoria.

Un Saludo.

Preguntas similares