当我使用 JAXB 时,出现了问题。
我将实体转换为 xml 字符串,一切正常。
但是当我将 xml String 转换回实体时,一些信息会丢失(它们都具有相同的类型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” 此问题与以下位置有关: 在公共 java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.getFlightBaseDate() 在 com.wonders.nlia.omms.vo.FlightServiceInfoVo 此问题与以下位置有关: 在公共 java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.flightBaseDate 在 com.wonders.nlia.omms.vo.FlightServiceInfoVo
为什么 JAXB 无法区分属性及其 getMethod?
如何解决?
平台:jdk7 win7 eclipse tomcat wtp
我的解组代码是:
JAXBContext context = JAXBContext.newInstance(FlightServiceInfoVo.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
FlightServiceInfoVo flightServiceInfoVo =(FlightServiceInfoVo)unMarshaller.unmarshal(new StringReader(flightServiceInfoVoXml));
flightServiceInfoVoXml 是一个字符串。