類型綁定 bindings.xml

2019-04-19 21:21 更新

XML 與 Java 都有自身語言的數(shù)據(jù)類型,它們大多數(shù)是對應(yīng)的,有時候我們想更改這種映射關(guān)系,就需要使用到 bindings.xml。

如下是一個簡單的映射關(guān)系,表示將 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>  

這里使用到了內(nèi)置的解析函數(shù)parseDate

  1. 單個映射文件 xjc book.xsd -b bindings.xml
  2. 多個映射文件,需要每一個都指定-b參數(shù) xjc book.xsd -b binding1.xml -b binding2.xml

如果不能滿足業(yè)務(wù)需求,還可以自己實現(xiàn)解析規(guī)則:

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

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號