技术开发 频道

使用JAXB从一个对象模型中产生XML文档


IT168技术文档】 
    引入
    Java提供各种方式来处理XML,其中包括: 
    使用简单的文件I/O或者javax.xml.stream.XmlStreamWriter. 
    使用XML序列化java.beans.XMLEncoder,它能够产生一个Java Bean的XML表示法,同样,ObjectOutputStream也能够用来创建序列化对象的二进制表示法。 
    使用专门的类库像XStream,直接使用SAX(XML的简单API)或者通过JAXP API来使用DOM(文档对象模型)。 

    尽管XML和Java技术已经在数据交换上已经有成熟的模型,但是将一个Java对象模型映射到XML和将XML映射为Java对象模型还是有点神秘的。可以考虑使用JAXB作为一种解决方案,JAXB (Java Architecture for XML Binding)可以使你将XML转换为Java数据绑定和从XML schemas产生Java类,反之也是可以的。它非常方便且容易使用,它提供了像XML验证和使用注释和适配器进行定制。下图阐述了JAXB的用法:



    JAXB API在javax.xml.bind包中被定义,它是一系列的接口和类,从schema产生的代码可以使应用程序进行通讯。JAXB API最主要的就是javax.xml.bind.JAXBContext类,JAXBContext是一个抽象的类,它可以管理XML/Java 绑定,也可以被看作为一个工厂,因为它提供: 

    Unmarshaller类可以将XML转换为Java变得连续并且可以随意的验证XML(使用setSchema方法) 
    Marshaller类使一个对象图形到XML的转换变得连续并且可以随意的验证。 

    首先,JAXB通过使用schema generator能够在一个XML schema中定义一系列的类,它也提供相反的操作,允许你通过schema compiler从一个给定的XML schema产生Java类的集合。 

    schema compile将XML schema看作为输入并产生一个Java类和接口的包,这个接口反应了在源schema中定义的规则。这些类是被注释使用一个可定制的Java-XML映射提供运行时框架。 

    JAXB也可以使用schema generator从一个XML schema中产生一个Java对象层或者提供一个对象Java层来描述相应的XML schema。运行时框架提供了相应的unmarshalling, marshalling和验证功能。也就是说,你可以从一个XML文档转换为一个对象图形(unmarshalling)或者将一个对象图形转换为XML格式(marshalling)。 

    这些功能就是为什么JAXB经常和Web service相关联的原因。Web service使用API来将对象转换为消息,该消息可以通过SOAP来进行发送。本文所使用的例子就是一个虚拟音乐公司的地址薄的应用。
0
相关文章