`
zzc1684
  • 浏览: 1222848 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JAXB学习二 (类型绑定)

    博客分类:
  • JAXB
阅读更多

上面一节简单介绍了怎么入门JAXB,这节介绍怎么自定义绑定类型。

 

JAXB会有一些默认的类型匹配,以下是一张匹配表:

 

XML Schema Type
Java Data Type
xsd:string
java.lang.String
xsd:integer
java.math.BigInteger
xsd:int
int
xsd.long
long
xsd:short
short
xsd:decimal
java.math.BigDecimal
xsd:float
float
xsd:double
double
xsd:boolean
boolean
xsd:byte
byte
xsd:QName
javax.xml.namespace.QName
xsd:dateTime
javax.xml.datatype.XMLGregorianCalendar
xsd:base64Binary
byte[]
xsd:hexBinary
byte[]
xsd:unsignedInt
long
xsd:unsignedShort
int
xsd:unsignedByte
short
xsd:time
javax.xml.datatype.XMLGregorianCalendar
xsd:date
javax.xml.datatype.XMLGregorianCalendar
xsd:g
javax.xml.datatype.XMLGregorianCalendar
xsd:anySimpleType
java.lang.Object
xsd:anySimpleType
java.lang.String
xsd:duration
javax.xml.datatype.Duration
xsd:NOTATION
javax.xml.namespace.QName

 

可以看到dateTime对应的类为"

javax.xml.datatype.XMLGregorianCalendar",通常这不会是我们想要的,可能我们更希望是java.util.Calendar。
要实现这种绑定,就需要我们自定义了。
在JAXB中,可能通过定义一个binding文件来实现自定义绑定类型,例如要匹配dateTime到"java.util.Calendar",可以如下:
Xml代码 复制代码 收藏代码
  1. <bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0"  
  2.      xmlns:xs="http://www.w3.org/2001/XMLSchema">    
  3.     <globalBindings>    
  4.         <javaType name="java.util.Calendar" xmlType="xs:date"  
  5.          parseMethod="javax.xml.bind.DatatypeConverter.parseDate"  
  6.          printMethod="javax.xml.bind.DatatypeConverter.printDate" />    
  7.     </globalBindings>    
  8. </bindings>  
 
要使用自定义的解析方法也可以,例如:
Xml代码 复制代码 收藏代码
  1. <bindings xmlns="http://java.sun.com/xml/ns/jaxb"  
  2.  version="2.0"  
  3.  xmlns:xs="http://www.w3.org/2001/XMLSchema">  
  4.   <globalBindings>  
  5.     <javaType name="java.util.Date" xmlType="xs:date"  
  6.       parseMethod="com.liulutu.jaxb.DateAadpter.parseDate"  
  7.       printMethod="com.liulutu.jaxb.DateAdapter.printDate"  
  8.     />  
  9.   </globalBindings>  
  10. </binding>   

这里你需要行在src下定义一个com.liulutu.jaxb.DateAadpter类,并提供printDate和parseDate方法。如下:

Java代码 复制代码 收藏代码
  1. package com.liulutu.jaxb;  
Java代码 复制代码 收藏代码
  1. public class DateAdapter {   
  2.      public static Date parseDate(String s) {   
  3.         return DatatypeConverter.parseDate(s).getTime();   
  4.      }   
  5.      public static String printDate(Date dt) {   
  6.          Calendar cal = new GregorianCalendar();   
  7.          cal.setTime(dt);   
  8.          return DatatypeConverter.printDate(cal);   
  9.      }   
  10.  }   

 

然后运行命令时加 -b 参数指定binding文件:
Java代码 复制代码 收藏代码
  1. xjc.bat students.xsd -d src -p com.liulutu.student.model -b bindings.xml  
分享到:
评论

相关推荐

    JAXB 学习资料 作者个人总结和测试程序

    2. **类型安全的访问**:JAXB 2.0提供了`@XmlElementRef`和`@XmlElementRefs`注解,允许在不指定具体类型的元素中引用其他类型,增强了类型安全性和灵活性。 3. **默认实现**:JAXB 2.0引入了默认的实现,即`jaxb-...

    jaxb2.0英文文档

    1. **Java类到XML映射(Java Class to XML Mapping)**:JAXB允许你定义Java类,并通过注解或XML绑定(binding)文件将其与XML Schema定义的元素和类型关联。当Java对象被序列化时,它们会被转换为相应的XML结构。 ...

    JAXB 学习笔记

    **JAXB(Java Architecture for XML Binding)学习笔记** JAXB是Java平台标准版(Java SE)的一部分,它提供了一种方便的方式来将XML数据绑定到Java对象上,以及将Java对象转换为XML数据。这个强大的工具使得开发...

    JAXB.zip_jaxb

    此外,JAXB还支持XML绑定自定义,如命名空间处理、类型转换和数据格式化等。 通过分析这个"JAXB.zip_jaxb"压缩包的内容,我们可以学习到如何在NetBeans中创建和管理一个JAXB项目,理解JAXB的基本原理和用法,以及...

    最新JAXB解析XML教程

    **JAXB(Java Architecture for XML Binding)**是Java平台上的一个标准API,它允许开发者将XML文档和Java对象之间进行绑定,实现XML数据的编解码。JAXB为开发人员提供了一种简单、高效的方式,使得在Java应用程序中...

    JAXB学习笔记

    JAXB(Java Architecture for XML Binding)是Java平台上的一项标准技术,用于在XML和Java对象之间进行绑定,从而实现XML文档和Java对象之间的自动转换。它提供了方便的数据交换方式,简化了XML处理,使得开发者可以...

    使用JAXB(用于XML绑定的Java API)解决现实世界问题的7个步骤

    3. **生成JAXB元数据**:有两种方法可以生成元数据,一是手动编写,二是利用JAXB的工具自动生成。例如,你可以使用`xjc`命令行工具,通过XML Schema(XSD)文件自动生成对应的Java类。 4. **创建Unmarshaller和...

    jaxb入门学习

    #### 二、JAXB的主要过程 1. **编组(Marshalling)**:将Java对象转化为XML文档。 - 这个过程通常涉及到将内存中的Java对象模型转换为一个或多个XML文档。 2. **解组(Unmarshalling)**:将XML文档解析为Java对象...

    java jdk1.6 新特性 jaxb2 demo

    JAXB 2.0是Java对象与XML之间的绑定框架,相比于之前的版本,它引入了注解支持,使得无需编写XML绑定元数据,可以直接在Java类上使用注解来定义XML映射。这简化了XML数据的处理,并提高了代码的可读性和维护性。...

    jaxb功能用法

    通过这个项目,你可以学习如何在实际应用中使用JAXB进行XML数据的处理,并确保数据的有效性和一致性。 总结,JAXB是Java平台上强大的XML处理工具,它通过将XML与Java Bean之间建立映射,简化了数据交换。结合XSD...

    通过JAXB实现完成java对象和xml的互相转换

    JAXB的另一个重要特性是它支持XML绑定的定制,包括命名空间处理、类型转换、列表处理等。开发者可以通过实现`XmlAdapter`接口来自定义数据类型的转换。 总的来说,JAXB为Java开发者提供了一种强大且灵活的方式,...

    JAXB资料集.rar

    5. **定制化处理**:JAXB提供了一些扩展机制,如事件监听器、类型转换器等,以便进行更复杂的对象XML映射。 "JAXB介绍.ppt"可能包含更直观的演示,通过幻灯片的形式展示JAXB的基本概念、工作原理以及实际应用案例。...

    使用jaxb将XML转化为JAVA BEAN

    除了基本的注解,JAXB还提供了许多高级功能,如自定义XML命名空间、类型转换、国际化支持、数据绑定到XML Schema等。对于大型项目,JAXB还可以通过绑定文件(bindings file)进一步定制XML到Java的映射。 在实际...

    使用JAXB完成JAVAbean与xml互转

    JAXB还提供了许多高级功能,例如处理命名空间、处理复杂类型、处理继承结构、自定义序列化行为等。在实际项目中,了解这些高级特性能够帮助你更好地利用JAXB解决XML数据处理的问题。 总的来说,JAXB是Java平台中一...

    jaxb for xjc 命令 实体类生成工具

    JAXB (Java Architecture for XML Binding) 是Java平台上的一项标准技术,用于将XML文档与Java对象进行绑定,使得XML数据能够方便地在Java程序中使用。XJC是JAXB的一部分,它是一个命令行工具,用于从XML Schema ...

    JAXBDemo:JAXB(Java Architecture for XML Binding)的演示,它允许在 XML 和 java 类之间轻松转换

    4. **绑定上下文**:`JAXBContext`是JAXB的核心组件,它负责管理所有相关的Java类型和XML绑定信息。我们可以通过传递一组类名或者包名来创建`JAXBContext`实例。 5. **定制映射**:如果默认的注解不能满足需求,...

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    JAXB提供了一种自动的方式,通过注解或者绑定文件来定义Java类和XML元素之间的映射关系。一旦建立了这种映射,我们就可以使用`Unmarshaller`来将XML文档解析为Java对象,或使用`Marshaller`将Java对象序列化为XML...

    Java与XML数据绑定

    Java与XML数据绑定是将XML文档中的数据结构映射到Java对象模型,反之亦然,这一过程在软件开发中有着...在阅读《Java与XML数据绑定》这本书时,读者将有机会深入了解这些概念,并通过实例学习如何在项目中有效运用。

    jaxb-istack-commons

    `jaxb-istack-commons` 是一个专门针对Java开发的实用工具代码库,它包含了一系列在处理XML绑定和相关任务时可能会用到的通用功能。这个项目是更大框架的一部分,旨在提供便捷、高效且灵活的编程支持,使得开发者在...

Global site tag (gtag.js) - Google Analytics