使用XStream进行XML转换:无法解析格式2016-02-04T18:01的日期

时间:2016-02-05 14:20:48

标签: java xml date xml-parsing xstream

我正在使用XStream转换XML。

我的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

我尝试使用以下软件包

中提供的thinkworks的ISO8601DateConverter

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

但这并没有解决我的问题......

是否有人遇到过同样的问题,并且知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

格式不正确。当我使用&#34; yyyy-MM-dd&#39; H&C:HH:mm&#34;作为格式,它对我有用。

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));