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>