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

SpringJAXB

JAXB ist Java-Architektur für XML-BindingAbkürzung. Es ermöglicht Java-Entwicklern, Java-Klassen in XML-Representation zu映射en. JAXB kann verwendet werden, um Java-Objekte in XML zu serialisieren und umgekehrt.

Es ist das OXM (Object XML Mapping) oder O/M-Framework.


Die Vorteile von JAXB erfordern keine Erstellung oder Verwendung von SAX oder DOM-Parser, auch keine Callback-Methoden zu schreiben.


Beispiel für die Integration von Spring und JAXB (Java-Objekte in XML zu serialisieren)

Sie müssen JAXB verwenden, um die Java-Objekte in XML zu serialisieren, um die folgenden Dateien zu erstellen:

Employee.java applicationContext.xml Client.java


Erforderliche Jar-Dateien

Um dieses Beispiel auszuführen, müssen Sie laden:

Spring Core jar-Datei Spring Web jar-Datei

Laden Sie alle jar-Dateien von Spring herunter, einschließlich core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, etc.


Employee.java

Wenn drei Eigenschaften id, Name und Gehalt definiert sind. Wir verwenden in dieser Klasse die folgenden Anmerkungen:

@XmlRootElement Es bestimmt die Wurzelelement des XML-Dokuments. @XmlAttribute Es bestimmt die Eigenschaft der Eigenschaft. @XmlElement Es bestimmt das Element.

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

Es definiert einen Bean namens jaxbMarshallerBean, bei dem die Klasse Employee mit dem OXM-Framework verbunden ist.

<?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

Es holt die Instanz des Marshaller aus der Datei applicationContext.xml und ruft die Methode marshal auf.

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");
    
  Employee employee=new Employee();
  employee.setId(101);
  employee.setName("Sonoo Jaiswal");
  employee.setSalary(100000);
    
  marshaller.marshal(employee, new StreamResult(new FileWriter("employee.xml")));
  
  System.out.println("XML Erstellt Erfolgreich");
 }
}

Beispiel-Ausgabe

employee.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee id="101>
<name>Sonoo Jaiswal</name>
<salary>100000.0</salary>
</employee>