JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
Marshal
java对象与(一)中相同,测试类如下
package xmlToJava;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Test {
public static void main(String[] args) throws JAXBException, FileNotFoundException {
List<Girl> li = new ArrayList<>();
Girl gl1 = new Girl();
gl1.setAge("10");
gl1.setCup("A");
li.add(gl1);
Girl gl2 = new Girl();
gl2.setAge("16");
gl2.setCup("C");
gl2.setName("Lina");
li.add(gl2);
Girl gl3 = new Girl();
gl3.setAge("11");
gl3.setCup("C");
gl3.setName("Aks");
li.add(gl3);
Root rt = new Root();
rt.setGirls(li);
JAXBContext jaxbC = JAXBContext.newInstance(Root.class);
Marshaller msl = jaxbC.createMarshaller();
//msl.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
OutputStream os = new FileOutputStream("11.xml");
msl.marshal(rt, os);//这里第一个参数是rt,首次写成了jaxbC,报错了
}
}
这里会生成11.xml,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<root>
-<girl>
<cup>A</cup>
<age>10</age>
</girl>
-<girl>
<cup>C</cup>
<age>16</age>
<name>Lina</name>
</girl>
-<girl>
<cup>C</cup>
<age>11</age>
<name>Aks</name>
</girl>
</root>