發送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的轉換過程。下一節將着重介紹註解在轉換過程的使用情形。