我们如何在Java中将嵌套的多级Map转换为XML?

时间:2016-02-10 14:02:20

标签: java xml

我尝试按以下方式进行操作

How to convert XML to java.util.Map and vice versa

但这并不是遍布地图。

请告知!

1 个答案:

答案 0 :(得分:0)

您需要使用XmlAdapter并覆盖marshalunmarshal方法。 以下示例代码显示如何将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;
   }

 }

并在@XmlJavaTypeAdapter字段上使用Map<String,Boolean>注释,如下所示

 @XmlJavaTypeAdapter(MapAdapter.class)
 private Map<String, Boolean> map