我有一些字段,其中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你知道怎么写一个转换器来处理这个问题吗?
发布于 2021-07-20 01:17:49
Ok解决了它。
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());
}
});https://stackoverflow.com/questions/68443664
复制相似问题