2016-02-05 42 views
0

我正在使用XStream轉換XML。使用XStream進行XML轉換:格式不能解析日期2016-02-04T18:01

我的XML如下所示。

<reportUnit> 
    <creationDate>2016-02-04T18:01</creationDate> 
    <description>Days Late Report</description> 
    <label>Days Late Report</label> 
    <permissionMask>2</permissionMask> 
    <updateDate>2014-10-31T19:45</updateDate> 
</reportUnit> 

用於轉換XML我的Java代碼就像

XStream xStream = new XStream(); 
xStream.alias("reportUnit", ReportUnit.class); 
xStream.registerConverter(
      new com.thoughtworks.xstream.converters.basic.DateConverter("yyyy-MM-dd HH:mm", new String[] {"dd/MM/yyyy HH:mm"},new GregorianCalendar().getTimeZone()){ 
       public boolean canConvert(Class type) { 
        return type.equals(Date.class) || type.equals(Timestamp.class); 
       } 
       public String toString(Object obj) { 
        return new SimpleDateFormat("yyyy-MM-dd HH:mm").format((Date) obj); 
       } 
     }); 

xStream.fromXML(objectXml.replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", BLANK)); 

上面的代碼工作的日期格式

<creationDate>2016-02-04 18:01</creationDate> 

但不適合

<creationDate>2016-02-04T18:01</creationDate> 

我我得到一個異常:無法解析日期2016-02-04T18:01

我利用現有的ThoughtWorks的在ISO8601DateConverter下面包

"com.thoughtworks.xstream.converters.extended.ISO8601DateConverter"

試圖但是這並沒有解決我的問題...

難道任何人都有同樣的問題,並知道如何解決這個問題。

+2

試試這個格式:' 「YYYY-MM-dd'T'HH:MM」' –

+0

@SashaSalauyou:waw..that很愚蠢的事情,我沒有嘗試....這就是答案。 ..我只是試着T ... Thanx答案...你搖滾! –

回答

0

格式不正確。當我使用「yyyy-MM-dd'T'HH:mm」作爲格式時,它爲我工作。

XStream xStream = new XStream(); 
xStream.alias("reportUnit", ReportUnit.class); 
xStream.registerConverter(
      new com.thoughtworks.xstream.converters.basic.DateConverter("yyyy-MM-dd'T'HH:mm", new String[] {"dd/MM/yyyy HH:mm"},new GregorianCalendar().getTimeZone()){ 
       public boolean canConvert(Class type) { 
        return type.equals(Date.class) || type.equals(Timestamp.class); 
       } 
       public String toString(Object obj) { 
        return new SimpleDateFormat("yyyy-MM-dd HH:mm").format((Date) obj); 
       } 
     }); 

xStream.fromXML(objectXml.replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", BLANK));