Может кто-нибудь помочь мне найти то, что я делаю не так здесь.Я должен проанализировать приведенную ниже XML-строку
<?xml version="1.0" encoding="UTF-8"?>
<Person>
<isActive>true</isActive>
<id>A01222262</id>
<name>Bob</name>
<addresses>
<address>
<attributeName>NEWYORK_ADDRESS</attributeName>
<attributeValue>NY 10003</attributeValue>
</address>
<address>
<attributeName>CALIFORNIA_ADDRESS</attributeName>
<attributeValue>CA 92336</attributeValue>
</address>
</addresses>
</Person>
. Для этого у меня есть три bean-компонента, которые должны отображаться, как показано ниже
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
name = "",
propOrder = {"isActive", "id", "name", "addresses"}
)
@XmlRootElement(
name = "Person"
)
public class Person {
protected boolean isActive;
@XmlElement(
name = "Id"
)
protected String id;
protected String name;
protected Addresses addresses;
// All Setter and Getter
}
Класс адресов похож на ниже
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
name = "Addresses",
propOrder = {"address"}
)
public class Addresses {
@XmlElement(
required = true
)
protected List<Address> address;
//All Setter Getter
}
И класс адресов выглядит следующим образом
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
name = "",
propOrder = {"attributeName", "attributeValue"}
)
public class Address {
@XmlElement(
required = true
)
protected String attributeName;
@XmlElement(
required = true
)
protected String attributeValue;
//All Setter Getter
}
Вот исключение, которое я получаю при разборе
com.fasterxml.jackson.databind.exc.MismatchedInputException:Невозможно создать экземпляр console.interceptor.Address
(хотя существует хотя бы один создатель): нет конструктора аргумента строки / фабричного метода для десериализации из значения строки ('NEWYORK_ADDRESS') в [Source: (StringReader);строка: 1, столбец: 173] (через цепочку ссылок: console.interceptor.Person ["address"] -> console.interceptor.Addresses ["address"] -> java.util.ArrayList [0])
Я пытаюсь выполнить синтаксический анализ, как показано ниже
XmlMapper xmlMapper=new XmlMapper();
xmlMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
Person p=xmlMapper.readValue(xmlString,Person.class); // xmlSting
Я использую версию Jackson-dataformat-xml 2.9.8.