Java 如何使用Jackson处理名称空间重复的xml标记

Java 如何使用Jackson处理名称空间重复的xml标记,java,xml,annotations,jackson,Java,Xml,Annotations,Jackson,是否可以使用Jackson来处理基于名称空间的重复xml标记 下面的代码抛出一个JsonMappingException:多个表示属性“url”的字段 private final ObjectMapper xmlMapper=new xmlMapper(); 私有静态最终字符串xml= "" + “www.namespace.com”+ “www.url.com”+ ""; @试验 public void parseXml()引发异常{ Example=xmlMapper.readValue(x

是否可以使用Jackson来处理基于名称空间的重复xml标记

下面的代码抛出一个JsonMappingException:多个表示属性“url”的字段

private final ObjectMapper xmlMapper=new xmlMapper();
私有静态最终字符串xml=
"" +
“www.namespace.com”+
“www.url.com”+
"";
@试验
public void parseXml()引发异常{
Example=xmlMapper.readValue(xml,Example.class);
断言example.namespaceUrl.equals(“www.namespace.com”);
}
公共静态类示例{
@JsonProperty(“url”)
公共字符串名称空间URL;
@JsonProperty(“url”)
公共字符串url;
}

非常感谢

目前没有办法做到这一点——您不能使用仅因命名空间不同而不同的属性。这不是一个基本的限制;也就是说,通过更多的工作,它可以得到支持;但这是当前的限制。

您可以通过JAXB(JSR-222)实现轻松地处理这个用例:如何?我的包信息中有javax.xml.bind.annotation.XmlNsForm.QUALIFIED。Jackson仍在爆炸,因为它看到了两个同名元素。有趣的是,元素名甚至不会出现在json负载上,所以这根本不重要
private final ObjectMapper xmlMapper = new XmlMapper();

private static final String xml =
        "<example xmlns:test='http://test.com/'>" +
            "<test:url>www.namespace.com'</test:url>" +
            "<url>www.url.com'</url>" +
        "</example>";

@Test
public void parseXml() throws Exception {
    Example example = xmlMapper.readValue(xml, Example.class);

    assert example.namespaceUrl.equals("www.namespace.com");
}

public static class Example {

    @JsonProperty("url")
    public String namespaceUrl;

    @JsonProperty("url")
    public String url;

}