一、XML簡介
XML是可擴展標記語言(Extensible Markup Language)的縮寫,是一種獨立於軟件和硬件的元數據語言。
XML由標籤和屬性組成,各種應用領域有着廣泛的應用。在Java EE中,XML文件通常作為配置文件使用,在Web服務中傳輸數據也常採用XML格式。
二、XML轉對象
XML轉對象是指將XML格式的數據轉換為Java對象的過程。為了完成這個過程,我們需要藉助於JAXB實現,JAXB是一個Java API,用於將Java對象與XML之間進行映射,同時提供了將XML轉換為Java對象以及將Java對象轉換為XML的功能。
三、讀取XML文件
使用JAXB的第一步是通過文件輸入流讀取XML文件:
try {
File file = new File("example.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Student student = (Student) unmarshaller.unmarshal(file);
} catch (JAXBException e) {
e.printStackTrace();
}
以上代碼中的Student是Java對象,example.xml是待轉換的XML文件,jaxbContext和unmarshaller是JAXB的API。
四、Java對象與XML映射
在這個過程中,我們需要定義Java對象和XML之間的映射關係。在JAXB中,我們使用@XmlRootElement和@XmlAccessorType註解來完成該映射。例如,我們定義一個Student類:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
@XmlElement
private int id;
@XmlElement
private String name;
@XmlElement
private List courses;
//getters and setters
}
在代碼中,@XmlRootElement定義了Student類作為XML文件的根元素;@XmlAccessorType(XMLAccessType.FIELD)表示我們將對所有屬性進行註解;@XmlElement定義了屬性與XML文件之間的映射關係。
五、JAXB註解詳解
1. @XmlRootElement
這個註解用於指定類作為XML文件的根元素。例如,定義一個Book類作為XML文件的根元素:
@XmlRootElement
public class Book {
// ...
}
2. @XmlAccessorType
這個註解用於指定哪些屬性或字段需要註解。常見的值有XmlAccessType.FIELD和XmlAccessType.PROPERTY。如果選擇FIELD,則將對所有屬性進行註解,如果選擇PROPERTY,則使用getXxx和setXxx方法進行註解。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
@XmlElement
private int id;
//getter and setter
public void setId(int id) {
this.id = id;
}
}
3. @XmlElement
這個註解用於將屬性映射為XML元素。如果屬性名與XML元素名相同,則可以省略該註解。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
@XmlElement(name = "studentID")
private int id;
//getter and setter
public void setId(int id) {
this.id = id;
}
}
4. @XmlAttribute
這個註解用於將屬性映射為XML中的屬性。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
@XmlAttribute
private int id;
//getter and setter
public void setId(int id) {
this.id = id;
}
}
5. @XmlTransient
這個註解用於將屬性排除在Java對象與XML文件之間的映射之外。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
@XmlTransient
private int age;
//getter and setter
public void setAge(int age) {
this.age = age;
}
}
六、總結
本文詳細闡述了XML轉對象的主要內容,涵蓋了XML讀取、Java對象與XML映射以及JAXB註解等方面。同時,通過代碼示例,展示了如何通過JAXB將XML格式的數據轉換為Java對象。
原創文章,作者:PQXE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134363.html
微信掃一掃
支付寶掃一掃