codecamp

类型绑定 bindings.xml

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

xjc 命令
格式化输出
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

JAXB 简单转化案例

JAXB 之 Trang

简单XML生成——Marshaller数据源

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }