4
我有对象具有List成员的链接,而链接仅具有属性但解析列表有错误 - 它被创建为空。
在下面的测试中links.getLinks()
返回空列表。有任何想法吗?
XML例如:无法解析具有属性的元素列表
<links>
<link x="1" y="2" />
<link x="3" y="4" />
</links>
Java的
@JacksonXmlRootElement(localName="links")
public class Links extends BaseAmebaElement {
@JacksonXmlProperty(localName="link")
//@JacksonXmlElementWrapper(localName="link")
private Collection<Link> links;
public Collection<Link> getLinks() {
return links;
}
public void setLinks(Collection<Link> links) {
this.links = links;
}
}
...
@JacksonXmlRootElement(localName="link")
public class Link {
@JacksonXmlProperty(localName="x", isAttribute=true)
private String href;
@JacksonXmlProperty(localName="y", isAttribute=true)
private String rel;
...
XmlMapper xmlMapper = new XmlMapper();
try {
Links links = xmlMapper.readValue(input, Links.class);
assertNotNull(links);
assertNotNull(links.getLinks());
assertEquals(2, links.getLinks().size());
} catch (Throwable e) {
fail(e.getMessage());
}
确保您使用的是最新版本(2.1.4)。您的代码和注释对我来说看起来是正确的。 – StaxMan 2013-03-12 20:31:36
@StaxMan是的,我正在使用2.1.4(com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.1.4)。 – longhua 2013-03-13 01:13:05
我尝试过同样的事情......在不同版本的尝试中,我也看到了这个问题 - 第一个元素在列表中始终为空。如果我有5个元素 - 第一个是空的,其他4个在里面。我还检查了元素是否存在问题 - 但是否,即使所有元素中的相同内容都使第一个元素为null(因为这仅用于练习和POC - 我的最终和快速解决方法是使用XStream 。但是,使用XStream的缺点是你必须解析所有数据,它对模型的变化非常严格和敏感。 – urir 2013-03-13 05:54:12