Con el uso de la clase CastorMarshaller, podemos lograr convertir un objeto Java en código XML y viceversa con la ayuda del uso de castor. El castor es la clase implementada para las interfaces Marshaller y Unmarshaller dentro de él, por lo que no requiere otras configuraciones por defecto. El ejemplo más común de Spring and Castor Integration es ‘Ordenar el objeto Java en el XML.
Implementación: necesitamos crear los siguientes archivos para ordenar objetos Java dentro del uso XML de Spring con Castor:
- Trabajador.java
- aplcontext.xml
- asignador.xml
- Usuario.java
El requisito de los archivos Jar es el siguiente:
Nota: Para ejecutar este ejemplo, necesitamos cargar los siguientes archivos:
- Archivos jar de Spring Core
- Archivos jar Spring Web
- ricino-1.3.jar
- castor-1.3-core.jar
A. Archivo: Trabajador.java
Este archivo define las tres propiedades que son id, nombre y salario del trabajador con setters y getters.
Java
// Java Program to Illustrate Worker Class package com.geeksforgeeks; // Class public class Worker { // Class data members // Worker id private int id; // Worker name private String name; // Worker Salary private float sal; // Getter public int gettingId() { return id; } // Setter public void settingId(int id) { this.id = id; } // Getter public String gettingName() { return name; } // Setter public void settingName(String name) { this.name = name; } // Getter public float gettingSal() { return salary; } // Setter public void settingSal(float sal) { this.sal = sal; } }
B. Archivo: aplcontext.xml
este archivo define un bean castorMarshallerBean como ‘clase de trabajador’ está delimitado con el marco OXM
XML
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springgframework.org/schemas/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instances" xsi:schemaLocation="http://www.springframework.org/schemas/beans http://www.springframework.org/schemas/beans/spring-beans-3.0.xsd"> <bean id="castorMarshallerBean" class="org.springframework.oxm.castor.CastorMarshaller"> <property name="targetClass" value="com.geeksforgeeks.Worker"> </property> <property name="mappingLocation" value="mapper.xml"> </property> </bean> </beans>
C. Archivo: asignador.xml
XML
<?xml version="1.0"?> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTED Version 1.0//EN" "http://castors.org/mapping.dtd"> <mapping> <class name="com.geeksforgeeks.Worker" auto-complete="true" > <map-to xml="Worker" ns-uri="http://www.geeksforgeeks.com" ns-prefix="dp"/> <field name="id" type="integer"> <bind-xml name="id" node="attribute"> </bind-xml> </field> <field name="name"> <bind-xml name="name"> </bind-xml> </field> <field name="sal"> <bind-xml name="sal" type="float"> </bind-xml> </field> </class> </mapping>
D. Archivo: Usuario.java
Este archivo obtiene una instancia del Marshaller desde el archivo aplcontext.xml y llama al método marshal a través de él.
Java
// Java Program to Illustrate Application Class package com.geeksforgeeks; // Importing required classes import java.io.FileWriter; import java.io.IOException; import javax.xml.transform.stream.StreamResult; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.oxm.Marshaller; // Main Class public class User { // Main driver method public static void main(String[] args) throws IOException { // Creating object of ApplicationContext and // Marshaller class ApplicationContext context = new ClassPathXmlApplicationContext("aplcontext.xml"); Marshaller marshaller = (Marshaller)context.getBean("castorMarshallerBean"); // Creating object of Worker class Worker worker = new Worker(); worker.settingId(123); worker.settingName("Rushikesh Khurpade"); worker.settingSal(300000); marshaller.marshal(worker, new StreamResult(new FileWriter("worker.xml"))); // Display message for successful execution // of program System.out.println(" XML Created Successfully "); } }
Producción:
XML Created Successfully
Archivo: trabajador.xml
XML
<?xml version="1.0" encoding="UTF-8"?> <dp:Employee xmlns:dp="http://www.geeksforgeeks.com" id="123"> <dp:name>Rushikesh Khurpade</dp:name> <dp:salary>300000.0</dp:salary> </dp:Employee>
Publicación traducida automáticamente
Artículo escrito por khurpaderushi143 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA