Convertir objetos XML a Java

¿Cuál es la mejor forma de convertir XML en objetos Java?

No deseo una representación similar, pero me gustaría extraer ciertos datos del XML y llenar un objeto Java. Eché un vistazo a XStream, pero realmente no me gustó todo el tipo de cosas “mover hacia abajo, avanzar”. Yo preferiría un objeto DOM como al escribir convertidores …

Sé que a todo el mundo le encantan las soluciones automáticas como JAXB, pero recomiendo codificar manualmente las implementaciones javax.xml.bind.Marshaller y javax.xml.bind.Unmarshaller para obtener exactamente lo que quiere sin llenar innecesariamente el espacio de memoria de su perm. Utilice JDOM para analizar XML y mapear los valores en objetos Java utilizando XPath. Trabajará una vez para lograrlo, pero tendrá exactamente lo que necesita y nada más.

Si tiene un esquema XML, JAXB es bueno, viene como parte del JDK. Genere clases Java ejecutando, por ejemplo, xjc -p foo myschema.xsd

Para leer un archivo XML y recuperar un objeto (de las clases generadas por la herramienta xjc):

  JAXBContext context = JAXBContext.newInstance(FooObj.class); Unmarshaller unMarshaller = context.createUnmarshaller(); FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml")); 

Puede hacer cosas similares si solo quiere que partes de un documento XML se conviertan en un objeto, por ejemplo, debería poder darle a JAXB parte de un documento DOM, en lugar de un archivo completo como se hizo anteriormente.

Mira el digestor de Apache

http://commons.apache.org/digester/

JAXB es la mejor forma de convertir objetos a XML, y MOXy es la mejor implementación de JAXB.

  • JAXB es estándar , incluido en Java SE 6
  • Tecnología de enlace XML estándar para JAX-WS, JAX-RS y SCA
  • Tiempo de ejecución simple

MOXy ofrece las siguientes extensiones:

  • Archivo de mapeo
  • Puede mapear entidades JPA
  • Mapeo basado en XPath

Me gusta Simple y me ha resultado muy fácil trabajar con él. Sin embargo, produce una representación similar, por lo que tal vez no sea exactamente lo que está buscando.

Si está buscando una solución tipo DOM, tal vez un JDom sea ​​adecuado.

Puede usar Castor para una conveniente conversión de XML a Java y viceversa.

Con Castor, puedes

  1. Conversión fácil: un simple Marshaller y Unmarshaller hacen que la conversión de XML a Java sea extremadamente fácil.
  2. Asignación: se puede crear un archivo de asignación para restringir la cantidad de datos que se convertirán de XML a Java y viceversa.

No estoy del todo seguro de si esto es lo que está buscando, pero puede usar algo como XMLBeans para vincular XML a objetos Java. Tuve que usarlo en un empleador anterior. Desafortunadamente, era un sistema existente y solo tuve que manipular los objetos y no tuve que producir la biblioteca que los contiene. Además, no estoy seguro de qué tan bien funcionará sin un XSD (no mencionó si tenía uno o no).