首先从https://jaxb.java.net/2.2.11/ 获取最新的jaxb 类
这里提供一个Schema文档
用xjc工具生成java类
xjc工具基于此模式来绑定一个模式到Java类,xjc命令行接口的一些选项列在下表:-nv 对于输入的模式不执行严格的XML验证
-b 指定外部的绑定文件
-d
-p 指定目标包
-classpath 指定classpath
-use-runtime impl.runtime包不被生成
-xmlschema 输入的模式是一个W3C XML模式(默认
配置jaxb类包
4) 将步骤3生成的四个JAVA文件导入到你JAVA工程下
由JAVA类得到XML文件
package test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import core.CatalogType;
public class jaxbWriteXml {
/**
* @param args
* @throws JAXBException
*/
public static void main(String[] args) throws JAXBException {
// TODO Auto-generated method stub
try {
File file=new File("testHomeWork.xml");
JAXBContext jaxbContext=JAXBContext.newInstance(BookstoreType.class);
Marshaller marshaller=jaxbContext.createMarshaller();
//指定编码格式
marshaller.setProperty(Marshaller.JAXB_ENCODING, "gbk");
//是否格式化生成的xml
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//是否忽略xml头信息
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);
BookstoreType bookstoreType=new BookstoreType();
List bookTypes=new ArrayList();
List authorNames=new ArrayList();
//for(int i=0;i<3;i++)
for(int i=0;i<3;i++)
{
AuthorName authorName=new AuthorName();
authorName.setFirstName("张三"+i);
authorName.setLastName("李四"+i);
BookType bookType=new BookType();
bookType.setGenre("IT类");
bookType.setPrice(45.00+i*5);
bookType.setTitle("Java每日一行第"+i+"行");
bookType.author=authorName;
bookTypes.add(bookType);
}
bookstoreType.book=bookTypes;
marshaller.marshal(bookstoreType, new File("testHome.xml"));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
结果:
Java每日一行第0行张三0
李四0
45.0
Java每日一行第1行张三1
李四1
50.0
Java每日一行第2行张三2
李四2
55.0