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 閱讀(1838) 評論(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)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 德江县| 三明市| 庆阳市| 枞阳县| 客服| 北流市| 康定县| 台中市| 广元市| 乌拉特前旗| 河东区| 兴安盟| 长乐市| 桓台县| 山东省| 万安县| 青州市| 江油市| 商城县| 五莲县| 射阳县| 九台市| 明星| 郁南县| 兰溪市| 晋中市| 巴青县| 宜城市| 霍林郭勒市| 莎车县| 华蓥市| 锡林浩特市| 桃园县| 永定县| 镇巴县| 湾仔区| 佛山市| 金昌市| 甘泉县| 沙田区| 普洱|