2014-11-15 4 views
2

У меня есть очень простой XMLJAXB, использовать атрибут XML в качестве ключа в HashMap

<List> 
    <Item name="somename"> 
     ..... 
    </Item> 
    <Item name="somename2"> 
    .... 

в моем объекте Java я хочу использовать имя атрибута в качестве ключа в HashMap. Возможно ли с помощью jaxb? Что-то вроде

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "List") 
public class MyList { 
    private HashMap<String,Item> map; 
} 

ответ

0

немного поздно, и я havn't пробовал сам, но еще можно попробовать следующее:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "List") 
public class MyList { 
    private HashMap<String, Item> map; 

    @XmlElement(name = "entry") 
    public MapEntry[] getMap() { 
     List<MapEntry> list = new ArrayList<MapEntry>(); 
     for (Entry<String, Item> entry : map.entrySet()) { 
      MapEntry mapEntry = new MapEntry(); 
      mapEntry.key = entry.getKey(); 
      mapEntry.value = entry.getValue(); 
      list.add(mapEntry); 
     } 

     return list.toArray(new MapEntry[list.size()]); 
    } 

    public void setMap(MapEntry[] arr) { 
     for(MapEntry entry : arr) { 
      this.map.put(entry.key, entry.value); 
     } 
    } 

    public static class MapEntry { 
     @XmlAttribute 
     public String key; 
     @XmlValue 
     public Item value; 
    } 
} 
Смежные вопросы