java基礎總結(五十五)--http發送接收xml格式報文

發送xml格式報文

使用Document將需要組裝的內容放在document對象中,在發送的時候通過該對象可以得到xml格式的String對象,然後發送給其他部件。

解析xml格式報文

收到的xml格式可以是一個String對象,可以通過JAXBContext對象來解析成java bean對象。好像也可以通過Document對象來處理

重點講解JAXB

來自https://blog.csdn.net/jiangchao858/article/details/81842774

 JAXB 教程 簡單轉化案例

摘要: JAXB 作爲JDK的一部分,能便捷地將Java對象與XML進行相互轉換,本教程從實際案例出發來講解JAXB 2 的那些事兒。完整版目錄

Java 對象轉 XML


首先定義需要轉換的 Java bean:Student.java

@XmlRootElement
public class Student {
    private String id;
    private String name;
    private Integer age;
 // setters, getters
}


就是這麼簡單,只需要在普通的Java類上添加註解@XmlRootElement。 
這裏有幾點需要注意:

  • JAXB 轉換對象必須屬於JAXBElement類型,或者使用 @XmlRootElement註解
  • JAXB 轉換對象必須擁有無參數構造器(默認存在,如果被覆蓋,需要顯示指定)
    public static void javaToxml(Student stu) throws Exception {
        // 獲取JAXB的上下文環境,需要傳入具體的 Java bean -> 這裏使用Student
        JAXBContext context = JAXBContext.newInstance(Student.class);
        // 創建 Marshaller 實例
        Marshaller marshaller = context.createMarshaller();
        // 設置轉換參數 -> 這裏舉例是告訴序列化器是否格式化輸出
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        // 構建輸出環境 -> 這裏使用標準輸出,輸出到控制檯Console
        PrintStream out = System.out;
        // 將所需對象序列化 -> 該方法沒有返回值
        marshaller.marshal(stu, out);
    }


這裏演示了最基本的Java 對象轉XML過程。爲了方便閱讀,每一步都有簡明註釋。

使用 JAXB 不需要引入第三方依賴jar包。

public static void main(String[] args) throws Exception {
        Student stu = new Student("001","Tom",22);
        javaToxml(stu);
}


使用main方法簡單測試一下,在控制檯可以看到如下輸出。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <age>22</age>
    <id>001</id>
    <name>Tom</name>
</student>


XML 轉 Java 對象


Java bean 對象依然使用Student.java。

public static void xmlTojava() throws Exception {
        // 獲取JAXB的上下文環境,需要傳入具體的 Java bean -> 這裏使用Student
        JAXBContext context = JAXBContext.newInstance(Student.class);
        // 創建 UnMarshaller 實例
        Unmarshaller unmarshaller = context.createUnmarshaller();
        // 加載需要轉換的XML數據 -> 這裏使用InputStream,還可以使用File,Reader等
        InputStream stream = SimpleTest.class.getClassLoader().getResourceAsStream("lesson1.xml");
        // 將XML數據序列化 -> 該方法的返回值爲Object基類,需要強轉類型
        Student stu = (Student) unmarshaller.unmarshal(stream);
        // 將結果打印到控制檯
        System.out.println(stu);
    }


這裏演示了最基本的XML數據轉換爲Java 對象的過程。爲了方便閱讀,每一步都有簡明註釋。

所需的lesson1.xml文件如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <age>22</age>
    <id>001</id>
    <name>Tom</name>
</student>


其實就是上一步輸出的數據。

    public static void main(String[] args) throws Exception {
        xmlTojava();
    }


使用main方法簡單測試一下,在控制檯可以看到如下輸出。

Student [id=001, name=Tom, age=22]

完整代碼


可以在GitHub找到完整代碼。

下節預覽

本節基於簡單的JAXB 代碼,直觀體驗的JAXB的轉換過程。下一節將着重介紹註解在轉換過程的使用情形。

 

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