我在使用JAXB时,遇到了一些问题。
我将实体转换为xml字符串,一切正常。
但是当我将xml字符串转换回实体时,一些信息丢失了(它们全部属于相同的类型java.util.Date
)。
在实体中:
public Date flightBaseDate;
在xml中:
<flightBaseDate>2013-09-16T00:00:00 08:00</flightBaseDate>
解组后,getFlightBaseDate()
返回null
。
我进行了谷歌搜索。
根据建议,我在实体中使用了@。
现在它是这样的:
@XmlElement(name = "timestamp", required = true)
public Date flightBaseDate;
我相信它会很完美,但是...会抛出异常,就像这样:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:1个IllegalAnnotationExceptions计数 类有两个相同名称的属性“flightBaseDate” 此问题与以下位置相关: public java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.getFlightBaseDate() 在com.wonders.nlia.omms.vo.FlightServiceInfoVo处 此问题与以下位置相关: public java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.flightBaseDate 在com.wonders.nlia.omms.vo.FlightServiceInfoVo处为什么JAXB不能区分属性和其get方法?
如何解决?
平台: jdk7 win7 eclipse tomcat wtp 我的Unmarshalling代码是:
JAXBContext context = JAXBContext.newInstance(FlightServiceInfoVo.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
FlightServiceInfoVo flightServiceInfoVo =(FlightServiceInfoVo)unMarshaller.unmarshal(new StringReader(flightServiceInfoVoXml));
flightServiceInfoVoXml 是一个字符串。