2009-01-05 21 views
6

A pesar de que he sido desarrollador por un tiempo, he tenido la suerte de haber evitado mucho trabajo con XML. Así que ahora tengo un proyecto en el que tengo que interactuar con algunos servicios web y me gustaría utilizar algún tipo de solución de asignación de objetos a XML.¿Cuál es la mejor biblioteca de Java OXM?

El único que conozco es JAXB. ¿Es eso lo mejor? ¿Hay alguna otra recomendación?

Una pega: estoy atascado con Java 1.4, así que no puedo hacer nada con las anotaciones.

Respuesta

6

Si llamas a un servicio web con un WSDL, JAXB es absolutamente la mejor opción. Eche un vistazo a wsimport, y estará en funcionamiento en 10 minutos.

No creo que JAXB 2.0 sea posible en Java 1.4. Es posible que necesite usar Axis en su lugar:

java -cp axis-1.4.jar;commons-logging-1.1.jar;commons-discovery-0.2.jar;jaxrpc-1.1.jar;saaj-1.1.jar;wsdl4j-1.4.jar;activation-1.1.jar;mail-1.4.jar org.apache.axis.wsdl.WSDL2Java http://someurl?WSDL 

Esto generará trozos similares a JAXB.

Si no tiene un WSDL o XSD, siempre puede generate one.

3

Hay XStream. Me parece recordar que lo usé hace siglos, y estuvo bien. No puedo decir que tengo suficiente experiencia para recomendarlo a favor o en contra, pero vale la pena echarle un vistazo como una alternativa.

+0

XStream es increíble para el objeto Java -> XML. No es ideal para el reverso. Suponiendo que tiene un WSDL o XSD, JAXB es mejor en este último. –

+0

XStream es muy bueno, pero tiene problemas con espacios de nombres. – duffymo

+1

En mi experiencia, XStream siempre es muy tentador para empezar, ya que es muy fácil, pero luego termina siendo tan defectuoso que siempre lo abandono para JAXB eventualmente. – skaffman

3

JiBX - conocido por su desempeño

JAXB2 - Facilidad de uso

Castor - Facilidad de uso a otros

- XMLBean, Xstream

10

JAXB es la mejor opción:

EclipseLink JAXB (MOXy) es la mejor implementación:

moxy es una aplicación JAXB con extensiones

moxy tiene un archivo externo de configuración (basado en anotaciones JAXB con extensiones): mapeo

ha basado XPath, para mapeo profundo:

Diseñado para manejar ORM mapea objetos, incluyendo el apoyo a las relaciones bidireccionales:

Cuestiones relacionadas