¿Cuál es la diferencia entre JAXP y JAXB?


Respuestas:


69

JAXP (Java API para procesamiento XML) es un término general bastante desactualizado que cubre las diversas API XML de bajo nivel en JavaSE, como DOM, SAX y StAX.

JAXB (Java Architecture for XML Binding) es una API específica (el material de abajo javax.xml.bind) que usa anotaciones para vincular documentos XML a un modelo de objetos java.


1
Además del análisis (DOM, SAX, etc.), creo que JAXP también incluye las API para tareas como evaluar XPath, realizar transformaciones XSLT y validar XML contra un esquema. Recuerdo haber usado javax.xml.validationclases para validar las solicitudes entrantes con los XSD de mi servicio, con el fin de ayudar a los clientes a solucionar problemas por sí mismos.
spaaarky21

49

JAXP es una API de Java para procesamiento XML, que nos proporciona una plataforma para analizar los archivos XML con los analizadores DOM o SAX.

Mientras que JAXB es Java Architecture for XML Binding, facilitará el acceso a documentos XML desde aplicaciones escritas en el lenguaje de programación Java.

Por ejemplo: Archivo Computer.xml, si queremos acceder a los datos con JAXP, estaremos realizando los siguientes pasos

  1. Cree un analizador SAX o un analizador DOM y luego analice los datos, si usamos DOM, puede consumir mucha memoria si el documento es demasiado grande. Supongamos que si usamos el analizador SAX, necesitamos identificar el comienzo del documento. Cuando encuentra algo significativo (en términos SAX, un "evento") como el inicio de una etiqueta XML o el texto dentro de una etiqueta, pone esos datos a disposición de la aplicación que realiza la llamada.
  2. A continuación, cree un controlador de contenido que defina los métodos que el analizador notificará cuando encuentre un evento. Estos métodos, conocidos como métodos de devolución de llamada, toman la acción apropiada en los datos que reciben.

Las mismas operaciones si las realiza JAXB, se deben realizar los siguientes pasos para acceder a Computer.xml

  1. Vincula el esquema del documento XML.
  2. Desagrupe el documento en objetos de contenido Java. Los objetos de contenido de Java representan el contenido y la organización del documento XML y están directamente disponibles para su programa. Después de desagrupar, su programa puede acceder y mostrar los datos en el documento XML simplemente accediendo a los datos en los objetos de contenido Java y luego mostrándolos. No es necesario crear y usar un analizador y no es necesario escribir un controlador de contenido con métodos de devolución de llamada. Lo que esto significa es que los desarrolladores pueden acceder y procesar datos XML sin tener que conocer el procesamiento XML o XML.

DOM trata el archivo XML como un objeto, mientras que SAX maneja elementos individuales como eventos, ¿cuál es más eficiente?
Malwaregeek

5
@Malwaregeek: Depende de la situación, SAX es preferible si accede a todo el XML en su orden secuencial, ya que ocupa menos memoria. DOM es preferible si desea acceso aleatorio de elementos intermedios en un XML, pero necesita más memoria. Este equilibrio es similar al equilibrio entre la memoria y el espacio de tiempo en todos los programas
Rengasami Ramanujam

1

La diferencia clave es qué papel juega el esquema xml. JAXP está desactualizado sin el conocimiento del esquema XML, mientras que JAXB maneja el enlace del esquema como el primer paso.


El tutorial JAXP ( JSR 206 ), en la parte "Implementación de la validación SAX" , proporciona una sección dedicada a "Validar con esquema XML". La especificación también menciona la clase Schema como parte de la API JAXP. (Se ha retirado como proyecto independiente tras su inclusión en OpenJDK 7, consulte la sección 11.5 en el PDF de especificación de JAXP 1.6.)
Olivier Cailloux
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.