0
Я пытаюсь десериализовать xml-данные на объект Java. Он десериализован, но список дочернего элемента пуст, т. Е. Массив пуст. Я пробовал по-другому, но не смог.JAXB Complex XML Deserialization (Unmarshalling)
ввода Строка XML
String tempXML = "<searchbadge xmlns=\"www.Ingo.com/Api/v1.0\"
xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance
\"><errorcode>0</errorcode><errormessage/><matches><match><address>road
A</address><badgeno>10109</badgeno><bday>7/13/2015 12:00:00 AM</bday>
<city>Roswell</city><name>Jason Reed</name><phone>876 456 2345</phone>
<state>Georgia</state><zip>30320</zip></match></matches></searchbadge>";
Корневой класс
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "searchbadge",namespace="www.Ingo.com/Api/v1.0")
public class SearchBadgeResponse implements Serializable{
@XmlElement(name = "errorcode")
private String errorcode ;
@XmlElement(name = "errormessage")
private String errormessage ;
@XmlElementWrapper(name = "matches")
@XmlElement(name = "match")
private List<Match> matches ;
public String getErrorCode() {
return errorcode;
}
public void setErrorCode(String errorcode) {
this.errorcode = errorcode;
}
public String getErrorMessage() {
return errormessage;
}
public void setErrorMessage(String errormessage) {
this.errormessage = errormessage;
}
public List<Match> getMatches() {
return this.matches;
}
public void setMatches(List<Match> matches) {
this.matches = matches;
}
}
Детский Класс:
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "match")
public class Match implements Serializable{
@XmlElement(name = "name")
public String name;
@XmlElement(name = "badgeno")
public String badgeno;
@XmlElement(name = "phone")
public String phone ;
@XmlElement(name = "bday")
public String bday;
@XmlElement(name = "address")
public String address;
@XmlElement(name = "city")
public String city ;
@XmlElement(name = "state")
public String state ;
@XmlElement(name = "zip")
public String zip ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name ;
}
public String getBadgeNo() {
return badgeno;
}
public void setBadgeNo(String badgeno) {
this.badgeno = badgeno ;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone ;
}
public String getBDay() {
return bday;
}
public void setBDay(String bday) {
this.bday = bday ;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address ;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city ;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state ;
}
public String getZip() {
return zip;
}
public void setzip(String zip) {
this.zip = zip ;
}
}
Демаршаллизация код
public static SearchBadgeResponse getObjectTmp(String valXML) {
SearchBadgeResponse myobj = null;
try
{
JAXBContext jaxbContextDes =
JAXBContext.newInstance(SearchBadgeResponse.class);
Unmarshaller unmarshaller = jaxbContextDes.createUnmarshaller();
StringReader reader = new StringReader(valXML);
myobj = (SearchBadgeResponse) unmarshaller.unmarshal(reader);
return myobj;
}
catch(JAXBException jex)
{
jex.printStackTrace();
}
return myobj;
}
Я не мог понять проблему. Любые подсказки/образец заметны.