【问题标题】:XStream unmarshalling XMLGregorianCalendarXStream 解组 XMLGregorianCalendar
【发布时间】:2021-09-27 07:18:14
【问题描述】:

我有一些字段,其中 xsd 将其作为 xs:dateTime

由于某种原因,当它被编组时,它被存储如下。

    <dateIssuedField class="org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl" resolves-to="org.apache.xerces.jaxp.datatype.SerializedXMLGregorianCalendar">
      <lexicalValue>2021-08-06T00:00:00</lexicalValue>
    </dateIssuedField>

我在下面收到此错误。

XStream unmarshalling failed.
com.thoughtworks.xstream.converters.ConversionException: Cannot construct type
---- Debugging information ----
message             : Cannot construct type
cause-exception     : java.lang.InstantiationException
cause-message       : javax.xml.datatype.XMLGregorianCalendar
construction-type   : javax.xml.datatype.XMLGregorianCalendar
class               : javax.xml.datatype.XMLGregorianCalendar
required-type       : javax.xml.datatype.XMLGregorianCalendar
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter

知道如何编写转换器来处理这个问题吗?

【问题讨论】:

    标签: xml jaxb xstream xerces xmlgregoriancalendar


    【解决方案1】:

    好的,解决了。

            xstream.registerConverter(new Converter() {
                @Override
                public boolean canConvert(Class arg0) {
                    return arg0.equals(javax.xml.datatype.XMLGregorianCalendar.class);
                }
    
                @Override
                public Object unmarshal(HierarchicalStreamReader arg0, UnmarshallingContext arg1) {
                    return null;
                }
    
                @Override
                public void marshal(Object arg0, HierarchicalStreamWriter arg1, MarshallingContext arg2) {
                    XMLGregorianCalendar x = (XMLGregorianCalendar) arg0;
                    arg1.setValue(x.toString());
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多