[英]How can we convert nested multi level Map to XML in Java?
您需要使用XmlAdapter
并覆盖marshal
和unmarshal
方法。 以下示例代码显示了如何将Map<String,Boolean>
转换为XML,反之亦然:
public class MapAdapter extends XmlAdapter<MapElements[], Map<String, Boolean>> {
public MapAdapter() {
}
@Override
public MapElements[] marshal(Map<String, Boolean> v) throws Exception {
MapElements[] elements = new MapElements[v.size()];
int i = 0;
for (Map.Entry<String, Boolean> entry : v.entrySet()) {
elements[i++] = new MapElements(entry.getKey(), entry.getValue());
}
return elements;
}
@Override
public Map<String, Boolean> unmarshal(MapElements[] v) throws Exception {
Map<String, Boolean> map = new HashMap<>();
for (MapElements element : v) {
map.put(element.key, element.value);
}
return map;
}
}
class MapElements {
@XmlElement
public String key;
@XmlElement
public Boolean value;
public MapElements() {
}
public MapElements(String key, Boolean value) {
this.key = key;
this.value = value;
}
}
并在Map<String,Boolean>
字段上使用@XmlJavaTypeAdapter
批注Map<String,Boolean>
如下所示
@XmlJavaTypeAdapter(MapAdapter.class)
private Map<String, Boolean> map
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.