`

转:JAXB简介及教程

xml 
阅读更多
                             JAXB简介及教程
原文http://opsunv.com/programming/2013/06/jaxb-tutorial/

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

jaxb为了应对各种情况的bean到java类的映射定义了一套注解机制,下面简单说明几个常用的注解及其作用:

@XmlAccessorType

控制字段或属性的序列化。XmlAccessType.FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。一般情况如果没有指定XmlAccessType注解可能会导致一个异常的产生:
Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Class has two properties of the same name "nodes"
	this problem is related to the following location:
		at public java.util.Map com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema.getNodes()
		at com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema
	this problem is related to the following location:
		at private java.util.Map com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema.nodes
		at com.zznode.e2esqm.core.diagnosis.schema.DiagnosisSchema



此种情况只需在类上添加注解@XmlAccessorType(XmlAccessType.FIELD)即可解决




@XmlJavaTypeAdapter

使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。需要注意的是XmlAdapter有泛型定义,其第一个泛型参数为jaxb可以直接识别的bean即由marshal()方法return的类型,第二个泛型参数为unmarshal()方法返回的类型.



@XmlElementWrapper

对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。例如:
一个javabean 包含一个List属性,正常情况生成的xml片段如下,

<rs id="1"/>
<rs id="2"/>
<rs id="3"/>


如果加上本XmlElementWrapper注解则会变为如下形式

<list>
   <rs id="1"/>
   <rs id="2"/>
   <rs id="3"/>
</list>




@XmlRootElement
将Java类或枚举类型映射到XML元素。

@XmlElement
将Java类的一个属性映射到与属性同名的一个XML元素。

@XmlAttribute
将Java类的一个属性映射到与属性同名的一个XML属性。

另外默认情况jaxb下从xml解析到javabean的时候是必须要注解XmlRootElement的存在,下面提供一种方式让bean不使用XmlRootElement注解,代码片段如下:

JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = context.createUnmarshaller();
 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
ByteArrayInputStream in = new ByteArrayInputStream(xml.getBytes());//xml为对应的需要转换为bean的xml字符串
Document doc = db.parse(in);
Node fooSubtree = doc.getFirstChild();
 
JAXBElement<?> el = unmarshaller.unmarshal( fooSubtree, clazz);
el.getValue();//这个就是bean的实例



当让以上方法只能应对简单bean和xml的互转,如果有复杂的还是需要通过注解来处理才能达到预期效果.

分享到:
评论

相关推荐

    JAXB的例子

    **JAXB简介** Java Architecture for XML Binding (JAXB) 是Java平台上的一个重要标准,它提供了一种机制,能够将XML文档与Java对象之间进行映射,实现XML数据和Java对象的无缝转换。JAXB允许开发者在Java应用中...

    JAXB应用实例.zip_36ZP_gainrtu_java

    **JAXB简介** JAXB 提供了两个主要功能:XML到Java对象的绑定(unmarshalling)和Java对象到XML的转换(marshalling)。通过自动化的代码生成,JAXB能够从Java类生成XML Schema,反之亦然。这种双向转换使得XML数据...

    JaxbUtil.zip_jaxb

    **JAXB简介** JAXB是Java平台标准版(Java SE)的一部分,它允许开发者在Java类和XML Schema之间进行自动绑定。通过JAXB,开发者可以轻松地将Java对象序列化为XML文档,或者将XML文档反序列化为Java对象,极大地简化...

    非常详细的cxf开发学习教程集合

    1. **CXF简介**:首先,你需要理解CXF的基本概念,它是如何作为服务提供者和服务消费者的,以及它在Java世界中的地位。 CXF支持多种Web服务标准,如SOAP、RESTful、WS-*等。 2. **安装与配置**:学习如何在你的开发...

    cxf开发教程

    1. **Apache CXF简介**:Apache CXF是一个开放源码的服务框架,它支持多种协议和服务模型,如SOAP、RESTful、WS-*等。CXF允许开发者以Java SE或Java EE环境来创建Web服务,并提供了丰富的API和工具,简化了开发过程...

    JAX-WS使用教程(内含jar包)

    1. **数据绑定**:JAXB(Java Architecture for XML Binding)用于在Java对象和XML之间自动转换,JAX-WS支持数据绑定,使处理复杂数据类型变得更加方便。 2. **消息处理**:JAX-WS支持处理SOAP消息的不同部分,如头...

    Axis2教程及jar文件

    一、Axis2简介 Axis2是Axis1的升级版,它在性能、可扩展性和模块化方面都有显著提升。Axis2的核心设计理念是基于组件和服务导向架构(SOA),这使得它能够处理复杂的Web服务交互。它支持SOAP 1.1和1.2协议,并且可以...

    微信公众平台JavaSDKweixin-popular.zip

    简介: weixin-popular 包括微信公众平台基础API与支付API,提供便捷的API调用接口. API 列表: TokenAPI access_token 获取 MediaAPI 多媒体上传下载(临时素材) ...

    XPath+教程.rar pdf

    一、XPath简介 XPath基于XML的树状结构,它的主要任务是定位XML文档中的特定节点。通过XPath,我们可以轻松地选取需要的数据,而无需遍历整个文档。XPath使用路径表达式来选取节点,类似于文件系统的路径,如“/...

    WebService CXF 详细教程

    **一、WebService简介** WebService是一种基于标准的,可以在不同操作系统、编程语言之间交换数据的Web应用程序。它通过WSDL(Web服务描述语言)定义了服务接口,利用SOAP(简单对象访问协议)进行通信,并通过UDDI...

    xml.rar_java xml_java读写xml

    本教程将详细讲解如何在Java环境中处理XML文件,包括读取和写入XML的基本操作。 一、XML简介 XML的设计目标是传输和存储数据,而非显示数据。它通过自定义的标签来描述数据,使得数据具有良好的可读性和可扩展性。...

    XML基础教程与实验指导课件PPT+源代码文件。

    一、XML简介 XML起源于1998年W3C发布的标准,它的主要目标是简化数据共享和交换,特别是在不同的系统和平台之间。XML是一种自描述性的语言,意味着每个元素都有明确的含义,易于人类理解和机器解析。与HTML不同,...

    xml权威教程(3天全面掌握xml)

    本教程将帮助你全面掌握XML的基础和高级概念,无论你是初学者还是希望深化理解的开发者,都能从中受益。 第一天:XML基础 1. XML简介:理解XML的起源、目的和基本结构,包括XML文档的声明、元素、属性、文本内容和...

    dom4j帮助文档+教程

    提供的"Dom4j使用简介.pdf"教程应该涵盖了DOM4J的基本用法和实例。通常,这会包含如何创建XML文档、解析XML文件、查找和修改元素、处理命名空间等内容。通过阅读这份教程,开发者可以快速上手DOM4J,提高XML处理能力...

    实战Web Service —— 使用Apache CXF开发Web服务的教程

    3. **数据绑定(Data Binding)**:如JAXB(Java Architecture for XML Binding),自动将XML消息转换为Java对象,反之亦然。 4. **WS-I兼容性**:CXF支持WS-I(Web Services Interoperability)基本配置,确保不同...

    axis web service的教程,入门到精通

    一、Web服务简介 Web服务是一种通过互联网交换数据的应用程序接口(API)。它们基于开放标准,如XML(可扩展标记语言)和WSDL(Web服务描述语言),允许不同系统间的无缝通信。SOAP(简单对象访问协议)是用于在Web...

    两种webService傻瓜式教程+代码+实例

    2. Xfire1.2工作原理:Xfire基于Spring框架,利用JAXB(Java Architecture for XML Binding)处理XML到Java对象的转换,提供SOAP和RESTful两种通信方式。 3. 创建Xfire1.2 Web服务:创建服务类并添加适当的注解,...

Global site tag (gtag.js) - Google Analytics