Pregunta

Hay un tipo aquí que jura que JAXB es lo mejor desde el pan rebanado. Tengo curiosidad por ver qué piensan los usuarios de Stack Overflow que es el caso de uso para JAXB y por qué es una solución buena o mala para ese caso.

¿Fue útil?

Solución

Soy un gran fan de JAXB para manipular XML. Básicamente, proporciona una solución a este problema (supongo que estoy familiarizado con XML, las estructuras de datos de Java y los esquemas XML):

Trabajar con XML es difícil. Uno necesita una forma de tomar un archivo XML, que es básicamente un archivo de texto, y convertirlo en algún tipo de estructura de datos, que su programa puede manipular.

JAXB tomará un Esquema XML que usted escriba y creará un conjunto de clases que corresponden a ese esquema. Las utilidades JAXB crearán la jerarquía de estructuras de datos para manipular ese XML.

JAXB se puede usar para leer un archivo XML y luego crear instancias de las clases generadas, cargadas con los datos de su XML. JAXB también hace lo contrario: toma clases de java y genera el XML correspondiente.

Me gusta JAXB porque es fácil de usar y viene con Java 1.6 (si está usando 1.5, puede descargar JAXB .jars). La forma en que crea la jerarquía de clases es intuitiva y, en mi experiencia, lo hace un trabajo decente que abstraiga el "XML" para que pueda centrarme en " datos " ;.

Entonces, para responder a su pregunta: esperaría que, para archivos XML pequeños, JAXB sea una exageración. Requiere que cree y mantenga un esquema XML, y que use "métodos estándar de libros de texto". de utilizar clases Java para estructuras de datos. (Clases principales, pequeñas clases internas para representar "nodos", y una enorme jerarquía de ellos). Por lo tanto, JAXB probablemente no sea tan bueno para una lista lineal simple de "preferencias". para una aplicación.

Pero si tienes un esquema XML bastante complejo, y muchos datos están contenidos en él, entonces JAXB es fantástico. En mi proyecto, estaba convirtiendo grandes cantidades de datos entre binario (que fue consumido por un programa C) y XML (para que los humanos pudieran consumir y modificar esos datos). El esquema XML resultante no era trivial (muchos niveles de jerarquía, algunos campos podrían repetirse, otros no), por lo que JAXB fue útil para poder manipular eso.

Otros consejos

Aquí hay una razón para no usarlo: el rendimiento se ve afectado. Hay una gran cantidad de gastos generales al calcular y desalojar. Es posible que también desee considerar otra API para el enlace de objetos XML, como JiBX: http://jibx.sourceforge.net/

Es un " ORM para XML " ;. Se utiliza con mayor frecuencia junto con JAX-WS (y, de hecho, las implementaciones de Sun se desarrollan juntas) para los sistemas WS Death Star.

Uso JAXB en el trabajo todo el tiempo y realmente me encanta. Es perfecto para esquemas XML complejos que siempre están cambiando y especialmente para el acceso aleatorio de etiquetas en un archivo XML.

Odio el proxeneta, ¡pero acabo de comenzar un blog y esto es, literalmente, lo primero que publiqué!

Compruébalo aquí:

http://arthur.gonigberg.com/2010 / 04/21 / Getting-Started-with-jaxb /

Con JAXB puede crear automáticamente representaciones XML de sus objetos (ordenamiento) y representaciones de objetos del XML (no riguroso).

En lo que respecta al esquema XML, tiene dos opciones:

  • Generar clases Java desde un XSD
  • Genera un XSD desde tus clases de Java

También hay algunas bibliotecas de serialización XML más simples como XStream , Digester o XMLBeans que podría ser alternativas.

JAXB es excelente si tienes que codificar a alguna especificación XML externa definida como un esquema XML ( xsd ).

Por ejemplo, usted tiene una aplicación comercial y debe informar los intercambios a la Uber Lame Trade Reporting App y le han dado ultra.xsd para que los reciba añadido. Usa el compilador $ JAVA_HOME / bin / xjc para convertir el XML en un grupo de clases Java (por ejemplo, UltraTrade ).

Luego, simplemente puede escribir una capa adaptador simple para convertir sus objetos comerciales a UltraTrades y usar el JAXB para reunir los datos a través de Ultra-Corp. Mucho es más fácil que perder la conversión de sus operaciones a su formato XML.

Donde todo se rompe es cuando Ultra-Corp no ha obedecido realmente su propia especificación, y el precio de comercio que tienen como xsd: float debería en realidad se expresará como un doble !

¿Por qué necesitamos JAXB? Los componentes remotos (escritos en Java) de los servicios web utilizan XML como medio para intercambiar mensajes entre ellos. ¿Por qué XML? Debido a que XML se considera una opción liviana para intercambiar mensajes en redes con recursos limitados. Muy a menudo necesitamos convertir estos documentos XML en objetos y viceversa. Por ejemplo, se puede usar un empleado de Java POJO simple para enviar datos de empleados a un componente remoto (también un programa Java).

class Employee{
 String name;
 String dept;
 ....
}

Este Pojo se debe convertir (Marshall) en un documento XML de la siguiente manera:

<Employee>
  <Name>...</Name>
  <Department>...</Department>
</Employee>

Y en el componente remoto, vuelva al objeto Java desde el documento XML (Un-Marshall).

¿Qué es JAXB?

JAXB es una biblioteca o una herramienta para realizar esta operación de Marshalling y UnMarshalling. Te ahorra este dolor de cabeza, tan simple como eso.

También puedes revisar JIBX. También es una muy buena carpeta de datos xml, que también está especializada en OTA (Open Travel Alliance) y es compatible con los servidores AXIS2. Si está buscando rendimiento y compatibilidad, puede verificarlo:

http://jibx.sourceforge.net/index.html

JAXB proporciona un rendimiento mejorado a través de optimizaciones de cálculo predeterminadas. JAXB define una API de programador para leer y escribir objetos Java desde y hacia documentos XML, simplificando así la lectura y escritura de XML a través de Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top