XML 是一种网络通信的数据交换的重要公共语言,是跨平台跨语言通信的一种重要手段,也是复杂配置文件的常用格式。在 Java 中操作 XML 是相当方便的,常用的读取解析xml的方式有DOM(Document Object Mode)模型和SAX(Simple API for XML)模型等,这些方式网络上的资料非常多,这里不再赘述。
无论是DOM模型还是SAX模型,都需要用户根据XML文件的内容格式手动配置解析各个元素属性等,使用起来还是不够方便。如果有一种方式能将xml结构与javabean对象相互映射,那将大大简化xml文件解析过程,使用起来非常方便。
本文介绍Jaxb对xml文件的解析。
Jaxb(Java Architecture for XML Binding) 是一个业界的标准,它使用注解配置,提供XML文件与Java对象之间的自动映射。JDK6以上版本已经集成JAXB功能,无需第三方依赖即可直接使用。
从JavaBean对象到XML的映射
首先创建一个JavaBean类:
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "doc")
public class DocType {
private String name;
private int id;
private String attr;
private List<String> lst;
public List<String> getLst() {
return lst;
}
public DocType setLst(List<String> lst) {
this.lst = lst;
return this;
}
@XmlAttribute
public String getAttr() {
return attr;
}
public void setAttr(String attr) {
this.attr = attr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "DocType [name=" + name + ", id=" + id + ", attr=" + attr + ", lst=" + lst + "]";
}
}
测试类(测试从javaBean映射到XML):
import java.util.Arrays;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class JavaBean2XMLTest{
public static void main(String[] args) throws JAXBException {
//从JavaBean对象到XML