我正在尝试解组一个看起来像这样的 xml 数据包:
<response>
<returncode>SUCCESS</returncode>
<meetings>
<meeting>
<meetingID>test01</meetingID>
<meetingName>Test</meetingName>
<createTime>1315254777880</createTime>
<attendeePW>ap</attendeePW>
<moderatorPW>mp</moderatorPW>
<hasBeenForciblyEnded>false</hasBeenForciblyEnded>
<running>true</running>
</meeting>
</meetings>
</response>
但是,会议元素也可以单独请求
<response>
<returncode>SUCCESS</returncode>
<meetingName>Test</meetingName>
<meetingID>test01</meetingID>
<createTime>1315254777880</createTime>
<voiceBridge>70775</voiceBridge>
<messageKey/>
<message/>
</response>
我想重用一个会议课程来满足两个目的:
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class BBBBase {
@XmlElement
private String returncode,messageKey,message;
@XmlRootElement(name="response")
public class BBBMeeting extends BBBBase{
@XmlElement
private String voiceBridge, meetingName, meetingID, attendeePW,moderatorPW;
@XmlRootElement(name="response")
public class BBBMeetings extends BBBBase{
@XmlElementWrapper(name="meetings")
@XmlElement(name="meeting")
private List<BBBMeeting> meetings;
当我将 @XmlRootElement 留在 BBBMeeting 上时,解组 BBBMeetings 会导致异常:java.lang.ClassCastException: nl.project.response.BBBMeeting 无法转换为 nl.project.response.BBBMeetings
当我删除它时,我可以很好地解组 BBBMeeting,但我不能再解组 BBBMeeting。
一种解决方法是创建一个基础 BBBMeeting 类,其中包含一个用 @XmlRootElement 注释的具体实现类。但这对我来说似乎很不雅。我认为私人列表会议上的@XmlElement 注释;将覆盖该类的任何类级别注释,但显然它没有。