Я пытаюсь разобрать этот XML-объект Java, объект Customer, содержащий список адресов электронной почты.JAXB Unmarshall to List
<customer>
<emailAddresses>[email protected]</emailAddresses>
<emailAddresses>[email protected]</emailAddresses>
</customer>
Имея проблемы со списком, я получаю правильное количество элементов списка (2), но значение тега EmailAddresses равно нулю
Customer.java
@XmlRootElement(name = "customer")
public class Customer
{
private List<EmailAddress> emailAddresses;
public Customer()
{
emailAddresses = new ArrayList<EmailAddress>();
}
public List<EmailAddress> getEmailAddresses()
{
return emailAddresses;
}
public void setEmailAddresses(List<EmailAddress> emailAddresses)
{
this.emailAddresses = emailAddresses;
}
}
EmailAddress.java
public class EmailAddress
{
private String emailAddresses;
public String getEmailAddresses()
{
return emailAddresses;
}
public void setEmailAddresses(String emailAddresses)
{
this.emailAddresses = emailAddresses;
}
}
При отсутствии модульного тестирования
@Test
public void shouldDeserialiseCusomerXMLToObject() throws JAXBException
{
String xml = "<customer>"
+ " <emailAddresses>[email protected]</emailAddresses>"
+ " <emailAddresses>[email protected]</emailAddresses>"
+ "</customer>";
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xml);
Customer msg = (Customer) jaxbUnmarshaller.unmarshal(reader);
// This passes, I have 2 emailAddresses
assertEquals(2, msg.getEmailAddresses().size());
// This fails, I have a null pointer instead of the email address
assertEquals("[email protected]", msg.getEmailAddresses().get(0).getEmailAddresses());
}
Я попытался, добавив несколько аннотаций, как на ниже, но не повезло. – MikeJ