English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JAXB Spring

O JAXB é Para a binding XML de arquitetura Javaabreviação. Permite que desenvolvedores Java mapeiem classes Java para representações XML. JAXB pode ser usado para encapsular objetos Java em XML e vice-versa.

É fornecido pela Sun OXM (Object XML Mapping) ou O/M framework.


As vantagens do JAXB não requerem a criação ou uso de analisadores SAX ou DOM, nem a escrita de métodos de callback.


Exemplo de integração Spring e JAXB (encapsulamento de objetos Java em XML)

Você precisa usar JAXB para criar os seguintes arquivos para encapsular objetos Java em XML:

Employee.java applicationContext.xml Client.java


Jar necessários

Para executar este exemplo, você precisa carregar:

Arquivo jar do Spring Core Arquivo jar do Spring Web

Baixe todos os arquivos jar do Spring, incluindo core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, etc.


Employee.java

Se definidos três atributos id, nome e salário. Usamos os seguintes comentários neste classe:

@XmlRootElement Ela especifica o elemento raiz do arquivo XML. @XmlAttribute Ela especifica a propriedade do atributo. @XmlElement Ela especifica o elemento.

package com.w;3codebox;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="employee")
public class Employee {
private int id;
private String name;
private float salary;
@XmlAttribute(name="id")
public int getId() {
  return id;
}
public void setId(int id) {
  this.id = id;
}
@XmlElement(name="name")
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
@XmlElement(name="salary")
public float getSalary() {}}
  return salary;
}
public void setSalary(float salary) {
  this.salary = salary;
}
}

applicationContext.xml

Ele define um Bean jaxbMarshallerBean, onde a classe Employee está ligada ao framework OXM.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:oxm="http://www.springframework.org/schema/oxm"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/oxm
      http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">
      
      <oxm:jaxb2-marshaller id="jaxbMarshallerBean">
        <oxm:class-to-be-bound name="com.w3codebox.Employee"/>
      </oxm:jaxb2-marshaller>
</beans>

Client.java

Ele obtém a instância do Marshaller a partir do arquivo applicationContext.xml e chama o método marshal.

package com.w;3codebox;
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;
public class Client{
 public static void main(String[] args) throws IOException{
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  Marshaller marshaller = (Marshaller)context.getBean("jaxbMarshallerBean");
    
  Funcionário funcionário=new Funcionário();
  funcionário.setId(101);
  funcionário.setNome("Sonoo Jaiswal");
  funcionário.setSalário(100000);
    
  marshaller.marshal(employee, new StreamResult(new FileWriter("employee.xml")));
  
  System.out.println("XML Criado com Sucesso");
 }
}

Saída do exemplo

employee.xml

<?xml version="1.0" encoding="UTF-8" standalone="sim"?>
<funcionário id="101>
<nome>Sonoo Jaiswal</nome>
<salário>100000.0</salário>
</funcionário>