使用JacksonXML,我想将未预先确定的元素列表转换为Map< String,String>,我可以使用什么样的注解?

j0pj023g  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(55)

我有一个带有属性名称的xml标签,这些属性名称不限于某些特定的值,比如:

<to amount="345.00" service="service" purpose="rent" account="381"/>

字符串
使用JacksonXML,我想将这些元素转换为Map<String,String>。我可以使用什么样的注解?

nzk0hqpo

nzk0hqpo1#

我使用@JsonAnySetter注解将XML元素转换为Map<String, String>。下面是一个示例:

public class MyElement {
    private Map<String, String> attributes = new HashMap<>();

    @JsonAnySetter
    public void addAttribute(String name, String value) {
        attributes.put(name, value);
    }

    public Map<String, String> getAttributes() {
        return attributes;
    }
}

字符串
在本例中,addAttribute方法使用@JsonAnySetter进行了注解,它告诉JacksonXML为任何在MyElement类中没有对应属性的XML属性调用此方法。然后,该方法将属性名称和值添加到属性Map中。
要将XML元素转换为MyElement对象,可以使用XmlMapper类:

String xml = "<to amount=\"345.00\" service=\"service\" purpose=\"rent\" account=\"381\"/>";
XmlMapper xmlMapper = new XmlMapper();
MyElement element = xmlMapper.readValue(xml, MyElement.class);


在XML化之后,MyElement对象中的属性Map将包含XML元素中的属性名称和值。

相关问题