上面一节简单介绍了怎么入门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",可以如下:
- <bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0"
-
xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
<globalBindings>
-
<javaType name="java.util.Calendar" xmlType="xs:date"
-
parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
-
printMethod="javax.xml.bind.DatatypeConverter.printDate" />
-
</globalBindings>
-
</bindings>
要使用自定义的解析方法也可以,例如:
- <bindings xmlns="http://java.sun.com/xml/ns/jaxb"
-
version="2.0"
-
xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
<globalBindings>
-
<javaType name="java.util.Date" xmlType="xs:date"
-
parseMethod="com.liulutu.jaxb.DateAadpter.parseDate"
-
printMethod="com.liulutu.jaxb.DateAdapter.printDate"
-
/>
-
</globalBindings>
-
</binding>
这里你需要行在src下定义一个com.liulutu.jaxb.DateAadpter类,并提供printDate和parseDate方法。如下:
- package com.liulutu.jaxb;
- public class DateAdapter {
-
public static Date parseDate(String s) {
-
return DatatypeConverter.parseDate(s).getTime();
- }
-
public static String printDate(Date dt) {
-
Calendar cal = new GregorianCalendar();
- cal.setTime(dt);
-
return DatatypeConverter.printDate(cal);
- }
- }
然后运行命令时加 -b 参数指定binding文件:
- xjc.bat students.xsd -d src -p com.liulutu.student.model -b bindings.xml
分享到:
相关推荐
2. **类型安全的访问**:JAXB 2.0提供了`@XmlElementRef`和`@XmlElementRefs`注解,允许在不指定具体类型的元素中引用其他类型,增强了类型安全性和灵活性。 3. **默认实现**:JAXB 2.0引入了默认的实现,即`jaxb-...
1. **Java类到XML映射(Java Class to XML Mapping)**:JAXB允许你定义Java类,并通过注解或XML绑定(binding)文件将其与XML Schema定义的元素和类型关联。当Java对象被序列化时,它们会被转换为相应的XML结构。 ...
**JAXB(Java Architecture for XML Binding)学习笔记** JAXB是Java平台标准版(Java SE)的一部分,它提供了一种方便的方式来将XML数据绑定到Java对象上,以及将Java对象转换为XML数据。这个强大的工具使得开发...
此外,JAXB还支持XML绑定自定义,如命名空间处理、类型转换和数据格式化等。 通过分析这个"JAXB.zip_jaxb"压缩包的内容,我们可以学习到如何在NetBeans中创建和管理一个JAXB项目,理解JAXB的基本原理和用法,以及...
**JAXB(Java Architecture for XML Binding)**是Java平台上的一个标准API,它允许开发者将XML文档和Java对象之间进行绑定,实现XML数据的编解码。JAXB为开发人员提供了一种简单、高效的方式,使得在Java应用程序中...
JAXB(Java Architecture for XML Binding)是Java平台上的一项标准技术,用于在XML和Java对象之间进行绑定,从而实现XML文档和Java对象之间的自动转换。它提供了方便的数据交换方式,简化了XML处理,使得开发者可以...
3. **生成JAXB元数据**:有两种方法可以生成元数据,一是手动编写,二是利用JAXB的工具自动生成。例如,你可以使用`xjc`命令行工具,通过XML Schema(XSD)文件自动生成对应的Java类。 4. **创建Unmarshaller和...
#### 二、JAXB的主要过程 1. **编组(Marshalling)**:将Java对象转化为XML文档。 - 这个过程通常涉及到将内存中的Java对象模型转换为一个或多个XML文档。 2. **解组(Unmarshalling)**:将XML文档解析为Java对象...
JAXB 2.0是Java对象与XML之间的绑定框架,相比于之前的版本,它引入了注解支持,使得无需编写XML绑定元数据,可以直接在Java类上使用注解来定义XML映射。这简化了XML数据的处理,并提高了代码的可读性和维护性。...
通过这个项目,你可以学习如何在实际应用中使用JAXB进行XML数据的处理,并确保数据的有效性和一致性。 总结,JAXB是Java平台上强大的XML处理工具,它通过将XML与Java Bean之间建立映射,简化了数据交换。结合XSD...
JAXB的另一个重要特性是它支持XML绑定的定制,包括命名空间处理、类型转换、列表处理等。开发者可以通过实现`XmlAdapter`接口来自定义数据类型的转换。 总的来说,JAXB为Java开发者提供了一种强大且灵活的方式,...
5. **定制化处理**:JAXB提供了一些扩展机制,如事件监听器、类型转换器等,以便进行更复杂的对象XML映射。 "JAXB介绍.ppt"可能包含更直观的演示,通过幻灯片的形式展示JAXB的基本概念、工作原理以及实际应用案例。...
除了基本的注解,JAXB还提供了许多高级功能,如自定义XML命名空间、类型转换、国际化支持、数据绑定到XML Schema等。对于大型项目,JAXB还可以通过绑定文件(bindings file)进一步定制XML到Java的映射。 在实际...
JAXB还提供了许多高级功能,例如处理命名空间、处理复杂类型、处理继承结构、自定义序列化行为等。在实际项目中,了解这些高级特性能够帮助你更好地利用JAXB解决XML数据处理的问题。 总的来说,JAXB是Java平台中一...
JAXB (Java Architecture for XML Binding) 是Java平台上的一项标准技术,用于将XML文档与Java对象进行绑定,使得XML数据能够方便地在Java程序中使用。XJC是JAXB的一部分,它是一个命令行工具,用于从XML Schema ...
4. **绑定上下文**:`JAXBContext`是JAXB的核心组件,它负责管理所有相关的Java类型和XML绑定信息。我们可以通过传递一组类名或者包名来创建`JAXBContext`实例。 5. **定制映射**:如果默认的注解不能满足需求,...
JAXB提供了一种自动的方式,通过注解或者绑定文件来定义Java类和XML元素之间的映射关系。一旦建立了这种映射,我们就可以使用`Unmarshaller`来将XML文档解析为Java对象,或使用`Marshaller`将Java对象序列化为XML...
Java与XML数据绑定是将XML文档中的数据结构映射到Java对象模型,反之亦然,这一过程在软件开发中有着...在阅读《Java与XML数据绑定》这本书时,读者将有机会深入了解这些概念,并通过实例学习如何在项目中有效运用。
`jaxb-istack-commons` 是一个专门针对Java开发的实用工具代码库,它包含了一系列在处理XML绑定和相关任务时可能会用到的通用功能。这个项目是更大框架的一部分,旨在提供便捷、高效且灵活的编程支持,使得开发者在...