类型绑定 bindings.xml

2019-04-19 21:21 更新

XML 与 Java 都有自身语言的数据类型,它们大多数是对应的,有时候我们想更改这种映射关系,就需要使用到 bindings.xml

如下是一个简单的映射关系,表示将 XML 中的 xs:date 类型映射到 Java 中的 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>  

这里使用到了内置的解析函数parseDate

  1. 单个映射文件 xjc book.xsd -b bindings.xml
  2. 多个映射文件,需要每一个都指定-b参数 xjc book.xsd -b binding1.xml -b binding2.xml

如果不能满足业务需求,还可以自己实现解析规则:

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);  
     }  
 }   

代码置于 com.csdn.jaxb.DateAadpter,编写自定义mybindings.xml

<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.csdn.jaxb.DateAadpter.parseDate"  
      printMethod="com.csdn.jaxb.DateAdapter.printDate"  
    />  
  </globalBindings>  
</binding>  

指定为自己定义的映射文件(如果要直接在终端运行,需要配置Java 的 CLASSPATH) xjc book.xsd -b mybindings.xml

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号