JAXB簡單轉化演示

JAXB簡單轉化演示

1.Java對象轉XML
(1)定義需要轉換的 Java bean 此處我們定義的是User對象和Person對象
(2)JAXB轉換對象使用@XmlRootElement註解

package com.liantuo.contrast.util.jaxb;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class User {
    private Integer id;
    private String name;
    private Integer age;

    ...... 此處是User屬性的get/set方法

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}
package com.liantuo.contrast.util.jaxb;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "id", "name", "age" })
@XmlRootElement(name = "xxx")
public class Person {
    @XmlElement(name = "Id", required = true)
    private Integer id;
    @XmlElement(name = "Name", required = true)
    private String name;
    @XmlElement(name = "Age", required = true)
    private Integer age;

    ......此處是Person屬性的get/set方法

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}

(3)Java對象轉XML的代碼

package com.liantuo.contrast.util.jaxb;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

public class JaxbUtil<T> {

    /**
     * Java對象轉XML
     * @param o
     * @return
     */
    public String javaToXml(T o){
        String rspXml = "";
        try {
            //1.獲取JAXB的上下文環境,指定需要轉換的 Java bean
            JAXBContext context = JAXBContext.newInstance(o.getClass());
            //2.創建 Marshaller 實例
            Marshaller marshaller = context.createMarshaller();
            //3.構建輸出環境
            StringWriter stringWriter = new StringWriter();
            //4.將對象序列化 此處序列化的是User對象
            marshaller.marshal(o, stringWriter);
            //5.得到轉換後的xml
            rspXml = stringWriter.toString();
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return rspXml;
    }

}

(4)測試方法

package com.liantuo.contrast.util.jaxb;

public class demo {
    public static void main(String[] args) throws ClassNotFoundException {
        User user = new User();
        user.setId(1);
        user.setName("lili");
        user.setAge(18);
        JaxbUtil jaxbUtil = new JaxbUtil();
        String xml = jaxbUtil.javaToXml(user);
        System.out.println("User對象轉XML的結果:" + xml);

        Person p  = new Person();
        p.setId(2);
        p.setName("lucy");
        p.setAge(19);
        String x = jaxbUtil.javaToXml(p);
        System.out.println("Person對象轉XML的結果:" + x);
    }
}

(5)執行結果

2.XML轉Java對象
(1),(2)操作和Java對象轉XML一樣,此處就不再重複講述了
(3)XML轉Java對象的代碼

package com.liantuo.contrast.util.jaxb;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

public class JaxbUtil<T> {

    /**
     * XML轉Java對象
     * @param xml
     * @param t
     * @return
     */
    public Object xmlToJava(String xml,T t){
        T o = null;
        try {
            //1.獲取JAXB的上下文環境,指定需要轉換的 Java bean
            JAXBContext context = JAXBContext.newInstance(t.getClass());
            //2.創建 Unmarshaller 實例
            Unmarshaller unmarshaller = context.createUnmarshaller();
            //3.得到轉換後的java對象
            o = (T)unmarshaller.unmarshal(new StringReader(xml));
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return o;
    }
}

(4)測試

package com.liantuo.contrast.util.jaxb;

public class demo {
    public static void main(String[] args) throws ClassNotFoundException {
        User user = new User();
        user.setId(1);
        user.setName("lili");
        user.setAge(18);
        JaxbUtil jaxbUtil = new JaxbUtil();
        String xml = jaxbUtil.javaToXml(user);
        System.out.println("User對象轉XML的結果:" + xml);

        Person p  = new Person();
        p.setId(2);
        p.setName("lucy");
        p.setAge(19);
        String x = jaxbUtil.javaToXml(p);
        System.out.println("Person對象轉XML的結果:" + x);

        User u = (User)jaxbUtil.xmlToJava(xml,new User());
        System.out.println("XML轉User對象的結果:" + u);

        Person person = (Person)jaxbUtil.xmlToJava(x,new Person());
        System.out.println("XML轉Person對象的結果:" + person);

    }
}

(5)執行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章