我在这里使用简单 XML 序列化(simple-xml-2.6.6.jar)将我的 XML 响应从 web 服务转换为 POJO 类。XML如下:
<Alerts>
<Alert>
<CCRDataObjectID>38</CCRDataObjectID>
<DateTime>
<Type>
<Text>Verified</Text>
</Type>
<ExactDateTime>2010-06-16T00:00:00Z</ExactDateTime>
</DateTime>
<Type>
<Text>Allergy</Text>
</Type>
<Description>
<Text>R-Tanna</Text>
</Description>
<Source>
<Actor>
<ActorID>122</ActorID>
</Actor>
</Source>
<Reaction>
<Description>
<Text>rash</Text>
</Description>
</Reaction>
</Alert>
<Alert>
<CCRDataObjectID>39</CCRDataObjectID>
<DateTime>
<Type>
<Text>Verified</Text>
</Type>
<ExactDateTime>2010-06-16T00:00:00Z</ExactDateTime>
</DateTime>
<Type>
<Text>Allergy</Text>
</Type>
<Description>
<Text>Zithromax</Text>
</Description>
<Source>
<Actor>
<ActorID>122</ActorID>
</Actor>
</Source>
<Reaction>
<Description>
<Text>rash</Text>
</Description>
</Reaction>
</Alert>
</Alerts>
POJO 如下:包含警报的第一个 POJO 列表是Alerts
@Root
public class Alerts {
@ElementList
private List<Alert> Alerts;
public List<Alert> getAlerts() {
return this.Alerts;
}
public void setAlerts(List<Alert> alerts) {
this.Alerts = alerts;
}
}
实际的第二个 POJOAlert
如下:
@Root(strict=false)
public class Alert {
@Element
private int CCRDataObjectID;
@Element
private DateTime DateTime;
@Element
private Type Type;
@Element
private Description Description;
@Path("Source/Actor")
@Element
private int ActorID;
@Element
private Reaction Reaction;
@Root
private static class Type {
@Element
private String Text;
}
@Root
private static class Description {
@Element
private String Text;
}
@Root
private static class DateTime {
@Element
private Type Type;
@Element
private String ExactDateTime;
}
@Root
private static class Reaction {
@Element
private Description Description;
}
public int getCCRDataObjectID() {
return CCRDataObjectID;
}
public void setCCRDataObjectID(int cCRDataObjectID) {
CCRDataObjectID = cCRDataObjectID;
}
public String getVerification(){
return this.DateTime.Type.Text;
}
public String getDateTime() {
return this.DateTime.ExactDateTime;
}
public String getAllergyType() {
return this.Type.Text;
}
/**
*
* @return Name/Description of an Allergy
*/
public String getDescription() {
return this.Description.Text;
}
public int getActorID() {
return ActorID;
}
public void setActorID(int actorID) {
ActorID = actorID;
}
public String getReactionDescription() {
return this.Reaction.Description.Text;
}
public String getDisplayDate() {
SimpleDateFormat sdf = new SimpleDateFormat("d MMM yyyy");
return sdf.format(this.DateTime.ExactDateTime);
}
}
在解析时,我得到如下错误:
Element 'Alert' does not have a match in class com.mypck.pojo.Alerts at line 2
现在我无法更改 XML 响应,因为它正在其他地方使用。我可以用 POJO 做什么,以便我可以解析我的 XML。