1

我正在尝试解组一个看起来像这样的 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 注释;将覆盖该类的任何类级别注释,但显然它没有。

4

0 回答 0