首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XStream解组XMLGregorianCalendar

XStream解组XMLGregorianCalendar
EN

Stack Overflow用户
提问于 2021-07-20 00:04:48
回答 1查看 25关注 0票数 0

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

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

代码语言:javascript
复制
    <dateIssuedField class="org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl" resolves-to="org.apache.xerces.jaxp.datatype.SerializedXMLGregorianCalendar">
      <lexicalValue>2021-08-06T00:00:00</lexicalValue>
    </dateIssuedField>

我在下面得到了这个错误。

代码语言:javascript
复制
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

你知道怎么写一个转换器来处理这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-20 01:17:49

Ok解决了它。

代码语言:javascript
复制
        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());
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68443664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档