unmarshal parse online jaxbunmarshaller jaxbcontext example cast bean java xml architecture jaxb xml-parsing

parse - xml to java object jaxb online



¿Dónde puedo encontrar una comparación detallada de los marcos de Java XML? (2)

Estoy tratando de elegir un marco de procesamiento XML para mis proyectos Java, y estoy perdido en los nombres ... XOM, JDOM, etc. ¿Dónde puedo encontrar una comparación detallada de todos los marcos Java XML populares?


Como Blaise señaló se adhieren a los estándares. Pero existen múltiples estándares creados durante el período para resolver diferentes problemas / casos de uso. Cuál elegir completamente depende de su requerimiento. Espero que la comparación a continuación pueda ayudarte a elegir la correcta.

Ahora hay dos cosas que debes elegir. API y las implementaciones de la API (hay muchas)

API

Sax: pros

  • evento basado
  • memoria eficiente
  • más rápido que DOM
  • soporta validación de esquemas

Saxo: contras

  • Sin modelo de objeto, tienes que aprovechar los eventos y crear tu auto
  • Un solo análisis del xml y solo puede avanzar.
  • solo leer api
  • no hay soporte xpath
  • un poco más difícil de usar

DOM: Pros

  • modelo de objeto en memoria
  • conserva el orden de los elementos
  • bidireccional
  • leer y escribir api
  • Manipulación xml
  • fácil de usar
  • soporta validación de esquemas

DOM: Contras

  • memoria de memoria para documentos XML más grandes (normalmente se utiliza para documentos XML de menos de 10 mb)
  • más lento
  • Modelo genérico, es decir, trabajas con nodos.

Stax: Pros

  • Lo mejor de SAX y DOM, es decir, facilidad de DOM y eficiencia de SAX
  • memoria eficiente
  • Modelo de tracción
  • leer y escribir api
  • soporta subparsing
  • Puede leer varios documentos al mismo tiempo en un solo hilo
  • El procesamiento paralelo de XML es más fácil

Stax: contras

  • no hay soporte para validación de esquemas (por lo que recuerdo, no estoy seguro de si lo han agregado ahora)
  • Solo se puede avanzar como saxo
  • no xml manipulación

JAXB: Pros

  • le permite acceder y procesar datos XML sin tener que conocer XML
  • bidireccional
  • más memoria eficiente que DOM
  • SAX y DOM son analizadores genéricos donde, como JAXB, crea un analizador específico para su XML Schmea
  • conversión de datos: JAXB puede convertir xml a tipos java
  • soporta la manipulación de XML a través de la API de objetos

JAXB: Contras

  • sólo puede analizar XML válido

Trax: para transformar XML de 1 formulario a otro formulario utilizando XSLT

Implementaciones

SAX, DOM, Stax, JAXB son solo especificaciones. Hay muchas implementaciones de código abierto y comerciales de estas especificaciones . La mayoría de las veces puede quedarse con lo que viene con JDK o su servidor de aplicaciones. Pero a veces es necesario utilizar una implementación diferente que se proporciona de forma predeterminada. Y aquí es donde se puede apreciar el api envoltorio JAXP . JAXP le permite cambiar las implementaciones a través de la configuración sin la necesidad de modificar su código. También proporciona una api independiente de analizador / especificación para analizar, transformar, validar y consultar documentos XML.

Desempeño y otras comparaciones de varias implementaciones.

Ahora los estándares son buenos, pero de vez en cuando se encuentra con esta loca base de datos en la que tiene que admitir el análisis de documentos XML de 100 gigabytes de tamaño o necesita un procesamiento ultra rápido de XML (puede ser que esté implementando un chip analizador XML) y esto es cuando necesitas volcar los estándares y buscar una forma diferente de hacer las cosas. ¡Se trata de usar la herramienta adecuada para el trabajo correcto! Y aquí es donde te sugiero que vtd-xml un vistazo a vtd-xml

Durante los días iniciales de SAX y DOM, las personas querían API más simples que las proporcionadas por cualquiera de ellos. JDOM , dom4j , XmlBeans , JiBX , Castor son los que conozco que se hicieron populares.


@ Pangea

JAXB vs DOM y SAX

JAXB no es directamente comparable a DOM y SAX. Las API de análisis Java DOM y SAX son API de nivel inferior para analizar documentos XML, mientras que JAXB (API de Java para enlace XML) es una API de nivel superior para convertir elementos y atributos XML a una jerarquía de objetos Java (y viceversa). Las implementaciones de JAXB probablemente usarán un analizador DOM o SAX entre bastidores para realizar el análisis real de los datos de entrada XML.