我有一个包含人类地图的阶级 世界 。如果将类世界编组,则会得到以下输出:
<world> <humans> <human key="2"> <value> <name>Tom</name> </value> </human> <human key="1"> <value> <name>Max</name> </value> </human> </humans> </world>
但我不想显示“值”标签。它应该看起来像:
<world> <humans> <human key="2"> <name>Tom</name> </human> <human key="1"> <name>Max</name> </human> </humans> </world>
这可能吗?
这是世界和人类的代码:
@XmlRootElement public class Human { @XmlElement private String name; public Human(){} } @XmlRootElement public class World { private Map<String, Human> humans = new HashMap<String, Human>(); public World(){} @XmlElementWrapper( name = "humans") @XmlElement(name = "human") public HumanEntry[] getMap() { List<HumanEntry> list = new ArrayList<HumanEntry>(); for (Entry<String, Human> entry : humans.entrySet()) { HumanEntry mapEntry =new HumanEntry(); mapEntry.key = entry.getKey(); mapEntry.value = entry.getValue(); list.add(mapEntry); } return list.toArray(new HumanEntry[list.size()]); } public void setMap(HumanEntry[] arr) { for(HumanEntry entry : arr) { this.humans.put(entry.key, entry.value); } } public static class HumanEntry { @XmlAttribute public String key; @XmlElement public Human value; } public void addHuman(String key, Human human){ this.humans.put(key, human); } }
正如所指出的ilcavero一个XmlAdapter可用于在JAXB申请的替代映射到地图(或任何类型的)。下面是一个具体示例的链接:
XmlAdapter
想要查询更多的信息