online objeto convertir convert cast java xml

convertir - ¿Cómo analizar xml a objeto java?



xml to java object jaxb online (5)

Tengo un XML que se usa para configurar algunas reglas, no tiene una estructura compleja, pero esta configuración se usa en cualquier parte de mi sistema, por lo que quiero analizar este XML para el objeto java y diseñar como modo singleton, es una buena manera de hacerlo. ¿Se puede usar para unmarshal XML to Java object directamente sin escribir muchos códigos?

Hice una investigación en Google y sabría que JAXB es una opción, mi aplicación es solo un tipo de programa de herramientas que lee la regla y luego sigue las cosas, JAXB podría utilizarse más ampliamente para el servicio web, ¿se ajusta a mis proyectos?

Si es así, la pregunta más importante es, usé xjc para generar la clase de origen del objeto java según el archivo xsd, después de unmarshal obtendré directamente este tipo de tipo de configuración, es necesario que convierta de nuevo, (de las clases de JaxB a mi propio objeto java pojo configuración), veo que la mayoría de los codificadores hicieron esto, pero ¿por qué? porque son algunos datos, solo desde el objeto generado a JAXB y se copian en el objeto POJO creado por nosotros mismos


JAXB es una opción confiable, ya que hace que las clases de XML a Java se asignen sin problemas. Pero hay otros marcos disponibles, aquí hay uno de ellos:

https://code.google.com/p/xmappr/


JAXB es una solución ideal. Pero no necesariamente necesitas xsd y xjc para eso. La mayoría de las veces no tienes un xsd pero sabes cuál es tu xml. Simplemente analiza tu xml, por ejemplo,

<customer id="100"> <age>29</age> <name>mkyong</name> </customer>

Crear las clases de modelo necesarias:

@XmlRootElement public class Customer { String name; int age; int id; public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public int getAge() { return age; } @XmlElement public void setAge(int age) { this.age = age; } public int getId() { return id; } @XmlAttribute public void setId(int id) { this.id = id; } }

Intenta unmarshal

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Customer customer = (Customer) jaxbUnmarshaller.unmarshal(new File("C://file.xml"));

Compruebe los resultados, corregir errores!



Para realizar Unmarshall usando JAXB:

1) Convierta el XML dado a XSD (por usted mismo o por un convertidor en línea),

2) Crear un proyecto JAXB en eclipse,

3) Cree un archivo XSD y pegue el contenido XSD convertido en él,

4) Haga clic derecho en ** Archivo XSD -> Generar -> Clases JAXB -> siga las instrucciones (esto creará todos los archivos .java nessasary en src, es decir, un paquete de información, fábrica de objetos y clase pojo),

5) Cree otro archivo .java en src para operar una operación no sistemática, y ejecútelo.

Feliz codificacion !!


Una cosa que es realmente importante entender, considerando que tiene un archivo XML como:

<customer id="100"> <Age>29</Age> <NAME>mkyong</NAME> </customer>

Lamento informarle pero:

@XmlElement public void setAge(int age) { this.age = age; }

no le ayudará, ya que trata de buscar el nombre del elemento "age" en lugar del nombre "Age" del XML.

Le recomiendo que especifique manualmente el nombre del elemento que coincide con el del archivo XML:

@XmlElement(name="Age") public void setAge(int age) { this.age = age; }

Y si tienes por ejemplo:

@XmlRootElement @XmlAccessorType (XmlAccessType.FIELD) public class Customer { ...

Esto significa que utilizará los java beans de manera predeterminada, y en este momento si especifica que no debe establecer otro

@XmlElement(name="NAME")

la anotación sobre un método de establecimiento para un elemento <NAME>..</NAME> fallará al decir que no puede haber dos elementos en una sola variable.

Espero que ayude.