【发布时间】:2019-09-16 06:00:27
【问题描述】:
谁能帮我找出我在这里做错了什么。我必须解析下面的 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的实例(尽管至少 一个创建者存在):没有字符串参数构造函数/工厂方法 从 [Source: (字符串读取器);行:1,列:173](通过参考链: console.interceptor.Person["addresses"]->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。
【问题讨论】: