您的位置:首页 > 编程语言 > Java开发

利用JAXB实现XML文件和Java对象之间的转化

2013-10-19 15:38 218 查看
JAXB(Java Architecture for XML Binding ) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。

根据XML Schema生成相对应的Java类:

XML Schema与特定XML的关系类似于Java 类和 实例之间的关系。以下根据特定的Schema生成相对应的Java类,然后实例化这些Java对象,再反向生成XMl文件

利用Jaxb的xjc命令直接就可以生成java类:

示例:
xjc bookstore.xsd -d src -p jaxb

bookstore.xsd 是Schema的文件名,一般以xsd作为文件名的后缀。

-d 的选项,是指定系统生成的Java源代码所放置的目录,示例中为:src

-p 的选项,是指定系统生成的Java源代码所在的Java Package的名称,示例中为:jaxb

这样就会在jaxb包下的src下生成给定的bookstore.xsd Schema文件对应的java类。在本例中分别生成了AuthorName.java Bookstore.java BookType.java objectFactory.java

接下来就是实例化了,代码示例如下:

public class JavaObject2Xml {

public void javaToXml(){

try{

JAXBContext jc = JAXBContext.newInstance("jaxb"); //参数为JAXB生成的java文件所在包名

ObjectFactory objFactory = new ObjectFactory(); //生成对象工厂

//通过工厂创建复杂类型及子元素

BookstoreType bookstoreType=objFactory.createBookstoreType();

bookstoreType.book=new ArrayList();

BookType bookType_1=objFactory.createBookType();

BookType bookType_2=objFactory.createBookType();

AuthorName author_1=objFactory.createAuthorName();

//创建子元素实例

author_1.setFirstName("Martin");

author_1.setLastName("Ma");

AuthorName author_2=objFactory.createAuthorName();

author_2.setFirstName("Laura");

author_2.setLastName("Li");

bookType_1.setAuthor(author_1);

bookType_1.setGenre("ScienceFiction");

bookType_1.setPrice(new BigDecimal(40.0));

bookType_1.setTitle("The Secret of universe");

bookType_2.setAuthor(author_2);

bookType_2.setGenre("ComputerScience");

bookType_2.setPrice(new BigDecimal(70.0));

bookType_2.setTitle("Datastructure and Algorithms");

bookstoreType.book.add(bookType_1);

bookstoreType.book.add(bookType_2);

//于Marshaller和Unmarshaller,这两个对象主要是用于Java对象和XML文档互相转换的主要接口

JAXBElement bookstoreE=objFactory.createBookstore(bookstoreType);

javax.xml.bind.Marshaller marshaller = jc.createMarshaller();

//生成符合给定schema的xml文件

marshaller.marshal(bookstoreE, new FileOutputStream("F:/Java workspace/jaxb/bookstore.xml"));

}

catch(Exception e){

e.printStackTrace();

}

}

这样就会在给定路径下生成一个符合给定Schema的Xml文件。

参考资料:/article/7931255.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: