正 文

用JAXB生成一个XML文档


www.7dspace.com  更新日期:2005-10-26 2:26:11  七度空间


      创建一个JAXBContext

      一个JAXBContext对象被用来实现JAXB绑定框架的操作:marshal, unmarshal和validate。应用使用静态方法newInstance(String contextPath)来创建一个新实例(对象)。contextPath指明一组由模式生成的接口的包名。

JAXBContext jaxbContext=JAXBContext.newInstance("generated");

      目录generated包含了JAXB生成的类和接口

      使用createMarshaller方法创建一个Marshaller。Marshaller类重载了marshal方法,可以将Java对象序列化(也就是,转换一个Java对象到XML数据)成SAX2事件,文档对象模型(DOM),OutputStream, javax.xml.transform.Result或者java.io.Writer对象。

Marshaller marshaller=jaxbContext.createMarshaller();

      为XML文档创建一个Java对象:CatalogImpl

      为了创建一个Java对象,首选生成一个ObjectFactory。ObjectFactory将会创建一个实现类的实例。对于每一个模式生成的Java类,ObjectFactory中定义了一个静态方法来创建一个它的对象。

ObjectFactory factory=new ObjectFactory();

      使用ObjectFactory类中的createCatalog来创建一个catalog元素。CatalogImpl是Catalog接口的实现类。
CatalogImpl catalog=(CatalogImpl)(factory.createCatalog());

      使用CatalogImpl类中的setSection方法来设置catalog元素的section属性。
catalog.setSection("Java Technology");

      用setPublisher方法来设置catalog元素的publisher属性。
catalog.setPublisher("IBM developerWorks");

      为XML文档创建一个Java对象:JournalImpl和ArticleImpl

      用ObjectFactory类中的createJournal方法来创建一个jounal元素。JournalImpl是Journal接口的实现类。
JournalImpl journal=(JournalImpl)(factory.createJournal());

      将journal元素加入catalog元素。从CatalogImpl得到JournalImpl的java.util.List,并把journal元素加入到List中。
java.util.List journalList=catalog.getJournal();journalList.add(journal);

      使用ObjectFactory类的createArticle方法来创建journal中的article元素。ArticleImpl是Article接口的实现类。
ArticleImpl article=(ArticleImpl)(factory.createArticle());

      使用ArticleImpl类中的setLevel方法来设置article元素的level属性。
article.setLevel("Intermediate");

      用setDate方法设置article的date属性
article.setDate("January-2004");

      用setTitle方法创建article元素的title属性
article.setTitle("Service Oriented Architecture Frameworks");

      用setAuthor方法创建article元素的author属性
article.setAuthor("Naveen Balani");

      将article元素加入journal元素中。从JournalImpl中得到ArticleImpl的java.util.List,并将article元素加入List中。
java.util.List  articleList=journal.getArticle(); articleList.add(article);

      与创建article元素的过程相类似,其它article元素也将被创建用来生成示例XML文档catalog.xml

      将Java对象序列化为一个XML文档

      用Marshaller类中的marshal方法来将CatalogImpl对象序列化为一个XML文档。CatalogImpl对象被序列化为一个OutputStream
marshaller.marshal(catalog, new FileOutputStream(xmlDocument));

      xmlDocument是输出的XML的java.io.File对象,它代表的是本节一开始所展示的XML文档。JAXBConstructor.java,这个程序用来从Java类中生成一个XML文档,也在这篇文章的示例代码文件中。

      总结

      JAXB提供了一个绑定编译器xjc, 从一个模式中生成Java对象,然后这些Java对象可以序列化为一个XML文档。但是,JAXB有一个限制:它不支持所有的XML模式结构。

4页,页码:[1] [2] [3] [4] 

上一篇:如何规避客户端浏览器缓存风险
下一篇:用 AXIOM 促进 XML 处理
作者:  来源:Matrix ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐