ここでは、Simple XML Serialization(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;
}
}
実際の2番目のPOJOは次のAlert
とおりです。
@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応答を変更できません。XMLを解析できるように、POJOで何ができますか。