2012-01-17 24 views
8

Estoy analizando documentos XML utilizando SAX Parser.Android: análisis DOM vs SAX vs XMLPullParser?

Quiero saber que es mejor y más rápido para trabajar con DOM, SAX o XMLPullParser.

+0

posible duplicado de [Android: mejor biblioteca de análisis XML?] (Http://stackoverflow.com/questions/3926367/android-best-xml-parsing-library) –

+3

el mejor tutorial que tiene tiene esto [aquí] (http://totheriver.com/learn/xml/xmltutorial.html#5.4). –

+0

buen enlace tutorial @LalitPoptani ......... – Lucifer

Respuesta

5

depende de qué estás haciendo, si tienes archivos muy grandes, entonces debes usar el analizador SAX ya que activará eventos y los liberará, nada se almacena en la memoria, y usando el analizador SAX no puedes acceder al elemento en ¡de una manera aleatoria no hay marcha atrás! , pero Dom le permite acceder a cualquier parte del archivo xml, ya que mantiene todo el archivo/documento en la memoria. Espero esta respuesta tu pregunta.

si desea saber qué programa de análisis más rápido Xerces va a ser el más rápido encontrará analizador SAX y se debe dar más rendimiento que Dom

+0

Estoy buscando la forma más rápida de analizar el documento XML que tengo. no es un documento enorme. – Basbous

+0

@Basbous: SAX o XMLPullParser son los más rápidos, pero DOM es _far_ más fácil de usar. –

1

Un aspecto por el cual se pueden clasificar diferentes tipos de analizadores es si necesitan cargar todo el documento XML en la memoria por adelantado. Los analizadores basados ​​en el Modelo de Objetos de Documento (DOM) hacen eso: analizan documentos XML en una estructura de árbol, que luego puede atravesar en la memoria para leer su contenido. Esto le permite atravesar un documento en orden arbitrario, y da lugar a algunas API útiles que se pueden abofetear sobre DOM, como XPath, un lenguaje de consulta de ruta que se ha diseñado específicamente para extraer información de los árboles. Usar DOM solo no es muy beneficioso porque su API es torpe y es costoso leer todo en la memoria, incluso si no es necesario. Por lo tanto, los analizadores DOM no son, en la mayoría de los casos, la opción óptima para analizar XML en Android.

Hay una clase de analizadores que no necesitan cargar un documento por adelantado. Estos analizadores son basado en la corriente, lo que significa que procesan un documento XML mientras lo leen desde la fuente de datos (la Web o un disco). Esto implica que no tiene acceso aleatorio al árbol XML como ocurre con DOM porque no se está manteniendo una representación interna del documento. Los analizadores de Stream se pueden diferenciar más el uno del otro. Hay analizadores de impulsos que, al transmitir el documento, devolverán la llamada a su aplicación cuando encuentre un elemento nuevo. Analizadores SAX, entran en esta clase. Luego están los analizadores de extracción, que son más como iteradores o cursores: aquí el cliente debe pedir explícitamente que se recupere el siguiente elemento.

Fuente: Android in Practice.