Java : Simple XML Serialization(simple-xml-2.6.6.jar) 对包含 <SOAP-ENV:Body> 和 <SOAP-ENV:Envel



我正在使用简单的XML序列化(Simple-xml-2.6.6.jar),以将我的XML响应从WebService转换为POJO类。 XML是:

 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
      <SOAP-ENV:Body>
         <return>
           <appointments>
             <appointment>
               <encounterId>211707</encounterId>
               <date>2012-10-16</date>
               <startTime>00:00:00</startTime>
               <ufname>Sam</ufname>
               <ulname>Willis</ulname>
               <reason>Chest Congestion</reason>
               <FacilityId>2837</FacilityId>
               <Notes/>
             </appointment>
          </appointments>
        </return>
      </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>

任命包含任命清单。Pojos如下:

@Root
public class Return {
    @ElementList
    private List<Appointment> appointments;
    @ElementList
    private List<Appointment> historicalAppointments;
    public List<Appointment> getAppointments() {
        return appointments;
    }
    public void setAppointments(List<Appointment> appointments) {
        this.appointments = appointments;
    }
    public List<Appointment> getHistoricalAppointments() {
        return historicalAppointments;
    }
    public void setHistoricalAppointments(List<Appointment> historicalAppointments) {
        this.historicalAppointments = historicalAppointments;
    }   
}

和约会是:

@Root
public class Appointment {
    @Element(required=false)
    int encounterId;
    @Element
    Date date;
    @Element
    String startTime;
    @Element(required=false)
    String endTime;
    @Element
    String ufname;
    @Element
    String ulname;
    @Element(required=false)
    int FacilityId;
    @Element(required=false)
    String reason;
    @Element(required=false)
    String Notes;
    @Element(required=false)
    String Status;
    @Element(required=false)
    int EncLock;
    public int getEncounterId() {
        return encounterId;
    }
    public void setEncounterId(int encounterId) {
        this.encounterId = encounterId;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getUfname() {
        return ufname;
    }
    public void setUfname(String ufname) {
        this.ufname = ufname;
    }
    public String getUlname() {
        return ulname;
    }
    public void setUlname(String ulname) {
        this.ulname = ulname;
    }
    public int getFacilityId() {
        return FacilityId;
    }
    public void setFacilityId(int facilityId) {
        FacilityId = facilityId;
    }
    public String getReason() {
        return reason;
    }
    public void setReason(String reason) {
        this.reason = reason;
    }
    public String getNotes() {
        return Notes;
    }
    public void setNotes(String notes) {
        Notes = notes;
    }
    public String getStatus() {
        return Status;
    }
    public void setStatus(String status) {
        Status = status;
    }
    public int getEncLock() {
        return EncLock;
    }
    public void setEncLock(int encLock) {
        EncLock = encLock;
    }

}

现在,如果我删除<SOAP-ENV:Envelope>&amp;<SOAP-ENV:Body>从我的XML起作用。但是,当用这些标签解析XML时,我会发现错误说:

Exception in thread "main" org.simpleframework.xml.core.ElementException: Element 'Body' does not have a match in class pojo.Return at line 3

现在,如果我删除<SOAP-ENV:Envelope>&amp;<SOAP-ENV:Body>从我的XML起作用。但是,当用这些标签解析XML时,我会收到错误。

那就是您的问题。简单的XML试图解析您提供的整个文档。如果您说:

serializer.read(Appointment.class, yourXML)

,该XML的根为<SOAP-ENV:Envelope>,然后是<SOAP-ENV:Body>,然后无法正常工作。您需要进行一个或多个类以将XML中的<SOAP-ENV:*>节点封装。否则,简单的XML将会感到困惑,并告诉您它没有看到它的期望。这就是为什么您删除这些元素时它可以工作的原因:因为XML现在看起来完全像它所期望的。

相关内容

最新更新