一、简介
JAXB:Java API For XML Binding
作用:实现POJO对象和XML之间的相互转换
二、实例
POJO对象:
@XmlRootElement
public class book {
private long id;
private String bookName;
private double price;
public book() {}
public book(long id, String bookName, double price) {
super();
this.id = id;
this.bookName = bookName;
this.price = price;
}
@Override
public String toString() {
return "book [id=" + id + ", bookName=" + bookName + ", price=" + price + "]";
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
2.1 POJO对象->XML
Marshaller类:将Java内容树序列化回XML数据的过程
public static void myMarshaller() throws JAXBException {
JAXBContext jAXBContext = JAXBContext.newInstance(book.class);
Marshaller marshaller = jAXBContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "utf-8"); //字符集设置
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //格式化
marshaller.marshal(new book(11, "java",25.8d),System.out);
}
2.2 XML->POJO对象
Unmarshaller类:将XML数据反序列化为新创建的Java内容树的进程,并可在解组时有选择的验证XML数据
public static void myUnMarshaller() throws JAXBException {
String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?> <book><bookName>java</bookName><id>11</id><price>25.8</price></book>";
JAXBContext jAXBContext = JAXBContext.newInstance(book.class);
Unmarshaller unmarshaller = jAXBContext.createUnmarshaller();
book book = (book)unmarshaller.unmarshal(new StringReader(xmlString));
System.out.println(book.toString());
}