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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 revolucion
14/01/2004 - 17:21 | Informe spam
Hola.
OK. Me has aclarado mucho las dudas que tenía. Voy a
intentar poner en practica la utilización de la clase
XMLReader.
Un Saludo.

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.


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida