que arquitectura arbol xml dom xpath sax

xml - arquitectura - ¿Es XPath mucho más eficiente en comparación con DOM y SAX?



que es el dom (5)

A menos que esté utilizando el prototipo de investigación de streaming XPath , es muy probable que su motor XPath esté cargando todo en la memoria, por lo que tendrá características similares a DOM. Por lo tanto, depende de su definición de "eficiencia". Ciertamente es más fácil de usar, y las implementaciones de XPath podrían cambiar para ser más eficientes, mientras que DOM siempre tendrá alguna representación de todo el documento en la máquina cliente, y SAX siempre será mucho más difícil de programar que XPath.

Necesito analizar una cadena xml y encontrar valores de nodos de texto específicos, valores de atributos, etc. Hago esto en javascript y estaba usando la clase DOMParser para el mismo. Más tarde me informaron que DOM ocupa mucha memoria y SAX es una mejor opción.

Recientemente descubrí que XPath también proporciona una forma simple de encontrar nodos.

Pero no estoy seguro de cuál de estos 3 sería la forma más eficiente de analizar XML. Amablemente ayuda ....


SAX es un analizador de arriba hacia abajo y permite el acceso en serie a un documento XML, y funciona bien para el acceso de solo lectura. Por otro lado, DOM es más robusto: lee todo el documento XML en un árbol y es muy eficiente cuando se quiere alterar, agregar o eliminar datos en ese árbol XML. XPath es útil cuando solo necesita un par de valores del documento XML, y sabe dónde encontrarlos (conoce la ruta de los datos, / root / item / challange / text).

SAX: eficiente en el tiempo al iterar a través del documento, ofrece una sola pasada para cada iteración

DOM: Flexible / rendimiento, le brinda más formas de trabajar sus datos

XPath: tiempo eficiente cuando solo necesitas leer un par de valores


Si solo necesita encontrar valores de nodos de texto específicos, entonces XPath. El motivo por el que DOM ocupa mucha memoria es porque lee todo el XML y forma el árbol del documento. SAX está basado en eventos. Por lo tanto, en base a lo que ha descrito, XPath se adapta mejor a su escenario.



Este documento de MSDN proporciona una gran cantidad de información sobre la optimización del procesamiento de XML .

En particular, la clase XPathDocument está diseñada para ser más eficiente para evaluar expresiones XPath que para usar (la clase XmlDocument basada en DOM). La razón es que XPathDocument es una representación de solo lectura de un documento XML, mientras que una implementación de DOM también cubre el cambio del documento.

El uso de DOM tiene un inconveniente no menos importante que, por lo general, da como resultado un código complicado y similar a un espagueti que es difícil de comprender y mantener.