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

JAXB Spring

JAXB هو هيكل Java用于XML绑定الاختصار الأولي. يسمح للمطورين Java بتحويل الفئات Java إلى شكل XML.

إنه قالب OXM (م映射 كائن XML) أو O/M المقدم من Sun.


ميزة JAXB لا تتطلب إنشاء أو استخدام محولات SAX أو DOM، ولا تتطلب كتابة طرق إرجاع.


مثال على دمج Spring و JAXB (تحويل كائنات Java إلى XML)

تحتاج إلى استخدام Spring مع JAXB لتحويل كائنات Java إلى XML لإنشاء الملفات التالية:

Employee.java applicationContext.xml Client.java


ملفات jar الضرورية

لإطلاق هذا المثال، تحتاج إلى تحميل:

ملف jar لـ Spring Core ملف jar لـ Spring Web

انقر على جميع ملفات jar الخاصة بـ spring، بما في ذلك core، web، aop، mvc، j2ee، remoting، oxm، jdbc، orm وما إلى ذلك.


Employee.java

إذا تم تعريف ثلاث خصائص id، الاسم، وسعر الساعة. نستخدم في هذا الفئة التعليقات التالية:

@XmlRootElement يحدد عنصر جذر ملف XML. @XmlAttribute يحدد خصائص العنصر. @XmlElement يحدد العنصر.

package com.w3codebox;
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

يحدد بيان Bean jaxbMarshallerBean، حيث يتم ربط فئة Employee بمفارز 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

يستخرج مثيل Marshaller من ملف applicationContext.xml ويقوم بنداء طريقة marshal.

package com.w3codebox;
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 بنجاح");
 }
}

الناتج من المثال

employee.xml

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