posts - 19,  comments - 11,  trackbacks - 0
如果想 JAXB 2.0 XJC 映射 xs:date 到 java.util.Date
最简单的方法是直接更改生成的代码, 找到所有XMLGregorianCalendar 然后用Date 替换. 如果有好的IDE工具很容易做到, 但这只对schema不常改动有用,否则每次都要做替换.

如果想让XJC生成正确的东西, 需要做customization
<xs:schema elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" targetNamespace="calendar-schemalet">
  
<xs:annotation><xs:appinfo>
    
<jaxb:globalBindings>
      
<jaxb:javaType name="java.util.Calendar" xmlType="xs:date"
        parseMethod
="javax.xml.bind.DatatypeConverter.parseDate"
        printMethod
="javax.xml.bind.DatatypeConverter.printDate"
        
/>
    
</jaxb:globalBindings>
  
</xs:appinfo></xs:annotation>
</xs:schema>
javaType 会做到, 上面是把xs:date 映射到 Calendar类型, 如果要映射到Date, 需要定义一对静态方法去转换 XML string 和 Date. 下面是转换代码
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);
  }

}
替换上面 parse/print 方面就可以了
<xs:schema elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" targetNamespace="calendar-schemalet">
  
<xs:annotation><xs:appinfo>
    
<jaxb:globalBindings>
      
<jaxb:javaType name="java.util.Date" xmlType="xs:date"
        parseMethod
="DateAdapter.parseDate"
        printMethod
="DateAdapter.printDate"
        
/>
    
</jaxb:globalBindings>
  
</xs:appinfo></xs:annotation>
</xs:schema>

posted on 2008-11-14 15:06 happyy2k 阅读(1819) 评论(2)  编辑  收藏 所属分类: Web Service

FeedBack:
# re: 转换 xs:date 到 java.util.Date 的Tips[未登录]
2012-08-12 06:37 | 刘军
你好, 我想问下 JAXB如何覆盖自定义的数据类型

能给出详细的步聚吗

谢谢!  回复  更多评论
  
# re: 转换 xs:date 到 java.util.Date 的Tips[未登录]
2012-08-12 06:45 | 刘军
你好, 我想问下 JAXB如何覆盖自定义的数据类型
能给出详细的步聚吗

跪求!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(2)

随笔分类(20)

随笔档案(12)

搜索

  •  

最新评论

阅读排行榜

评论排行榜