¿Por qué el saxo analiza más rápido que el análisis Dom? ¿Y cómo funciona Stax?

algo relacionado con:libxml2 de java

Sí, esta pregunta es bastante larga, lo siento. Lo mantuve tan denso como me pareció posible. En negrita las preguntas para que sea más fácil echar un vistazo antes de leer todo.

¿Por qué el análisis saxo es más rápido que el análisis dom? Lo único que se me ocurre es que con el saxofón probablemente ignoras la mayoría de los datos entrantes y, por lo tanto, no pierdes el tiempo procesando partes del xml que no te importan. IOW: después de analizar con SAX, no puede volver a crear la entrada original.Si escribió su analizador SAX para que representara todos y cada uno de los nodos xml (y así podría recrear el original), entonces no sería más rápido que DOM.

La razón por la que pregunto es que estoy tratando de analizar documentos XML más rápidamente. Necesito tener acceso a todo el árbol xml DESPUÉS de analizar. Estoy escribiendo una plataforma para que se conecten servicios de terceros, por lo que no puedo anticipar qué partes del documento xml se necesitarán y qué partes no. Ni siquiera sé la estructura del documento entrante. Es por eso que no puedo usar jaxb o sax. La huella de memoria no es un problema para mí porque los documentos xml son pequeños y solo necesito 1 en memoria a la vez. Es el tiempo que toma analizar este documento xml relativamente pequeño que me está matando. No he usado Stax antes, pero ¿tal vez necesito investigar más porque podría ser el término medio?Si entiendo correctamente, ¿Stax conserva la estructura xml original y procesa las partes que solicito a pedido? De esta manera, el tiempo de análisis original puede ser rápido, pero cada vez que le pido que atraviese parte del árbol que aún no ha atravesado, ¿es entonces cuando tiene lugar el procesamiento?

Si proporciona un enlace que responda a la mayoría de las preguntas, aceptaré su respuesta (no tiene que responder directamente a mis preguntas si ya están respondidas en otro lugar).

actualización: lo reescribí en sax y analiza documentos en promedio 2.1 ms. Esta es una mejora (16% más rápido) sobre los 2.5 ms que estaba tomando dom, sin embargo, no es la magnitud que yo (et al) habría adivinado

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta