Java 无法分析具有属性的元素列表

Java 无法分析具有属性的元素列表,java,xml,jackson,fasterxml,Java,Xml,Jackson,Fasterxml,我有一个对象链接,其中有一个列表的成员,而链接只有属性,但对列表的解析有错误-它被创建为空。 在下面的测试中links.getLinks()返回空列表。有什么想法吗? XML示例: <links> <link x="1" y="2" /> <link x="3" y="4" /> </links> 我可以在一些改变后得到结果。但是,它可以得到第一行(它是空的)。我不知道为什么 @JacksonXmlElementWrapper(useWrapp

我有一个对象链接,其中有一个列表的成员,而链接只有属性,但对列表的解析有错误-它被创建为空。
在下面的测试中
links.getLinks()
返回空列表。有什么想法吗?
XML示例:

<links>
<link x="1" y="2" />
<link x="3" y="4" />
</links>


我可以在一些改变后得到结果。但是,它可以得到第一行(它是空的)。我不知道为什么

@JacksonXmlElementWrapper(useWrapping=false)
@JacksonXmlProperty(localName="link")
private Collection<Link> links;
@jacksonxmlementwrapper(useWrapping=false)
@JacksonXmlProperty(localName=“link”)
私人收藏链接;
更新:
这应该是版本2.1.4中的一个bug。我刚试过,效果很好。

确保您使用的是最新版本(2.1.4)。您的代码和注释在我看来是正确的。@StaxMan是的,我正在使用2.1.4(com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.1.4)。我尝试了同样的方法。。。在不同版本的Trys中,我也看到了这个问题——列表中的第一个元素总是空的。如果我有5个元素,第一个是空的,另外4个在里面。我还检查了元素是否有问题,但没有,即使所有元素中的相同内容也会使第一个元素为null:(因为这只是为了练习和POC——我最后一个快速解决问题的方法是使用XStream。然而,使用XStream的缺点是您必须解析所有数据,它非常严格并且对模型中的更改非常敏感。听起来2.2.0-SNAPSHOT可以工作,2.2.0应该很快(在2周内)发布。)。很抱歉听到2.1.4有这些问题。最后一件事:一些问题与SJSXP Stax解析器(来自JDK)的使用有关,Woodstox()工作得更好。因此值得使用。我在2.2.0中尝试了基本上完全相同的用例,但我仍然看到这个bug,包括标准JDK Stax解析器和Woodstox解析器。
@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());
    }
@JacksonXmlElementWrapper(useWrapping=false)
@JacksonXmlProperty(localName="link")
private Collection<Link> links;