Cómo generar clases JAXB a partir de XML


Necesito generar clases a partir de xml que no proporcionen un esquema. Entiendo que esto es casi inútil, pero el hecho es que tenemos xml, está estructurado, y deberíamos ser capaces de crear un modelo a partir del xml. En el pasado lo he hecho a mano, pero los documentos xml actuales con los que estoy trabajando son bastante grandes y mi tiempo probablemente se gastaría mejor construyendo algo que haga lo que necesito. Pero, supongo que ya se ha hecho, y simplemente no puedo encontrarlo.

Alguna sugerencia?

Author: DanInDC, 2011-02-14

3 answers

Hay muchas herramientas disponibles (una búsqueda rápida en Google debería obtener algunas) que pueden generar XSD a partir de XML asumiendo el tipo de cadena para casi todo. Deberías poder usar ese XSD para ejecutar JAXB para obtener clases.

Aquí hay una herramienta en línea que te permite hacer eso.

Y aquí hay una tapa de pantalla: introduzca la descripción de la imagen aquí

 58
Author: Bala R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-14 17:54:40

Desde su archivo xml, puede crear un archivo de Definición de esquema XML (XSD). Una vez que tengas el XSD, podrás generar el código, necesitarlo para java, C#, C++, o todos los anteriores.

Si tiene Visual Studio, puede usar xsd.exe para generar el archivo XSD.

Referencias:

  • Www.xmlforasp.net/CodeBank/System_Xml_Schema/BuildSchema/BuildXMLSchema.aspx

  • Msdn.microsoft.com/en-us/library/x6c1kb0s (v=vs.71). aspx

  • Sintaxis de comandos: xsd file.xml [/outputdir: directory]

  • So "C:\Program Archivos \ Microsoft SDKs \ Windows \ v6. 0A \ Bin \ x64\xsd.exe" ejemplo.xml da un ejemplo.archivo xsd en el mismo directorio que el archivo xml.

XSD a Java: Referencia:

XSD a C++: Referencias:

  • stackoverflow.com/questions/445905/xml-schema-to-c-classes
  • www.codesynthesis.com/products/xsd /

XSD a C#: Referencia:

  • quickstart.developerfusion.co.uk/quickstart/howto/doc/xmlserialization/XSDToCls.aspx
  • Sintaxis de comandos: "C:\Program Archivos\Microsoft SDKs \ Windows \ v6. 0A \ Bin \ x64\xsd.exe " - c-l: c# - n: SomeNamespace ejemplo.xsd
 9
Author: James Oravec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-15 20:44:36

Si el XML fue creado por JAXB, se puede convertir fácilmente de nuevo en objetos. Hay un tutorial en oracle que ilustra una forma de hacer esto. Spring framework ofrece características similares utilizando JAXB que son muy convenientes.

 1
Author: Johan Sjöberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-14 17:56:29