Я использую Джерси и JAXB для создания простого УСПОКОИТЕЛЬНОГО веб-сервиса, у меня есть HashMap 'String' к 'Целому числу':
2010-04 -> 24
2010-05 -> 45
Я должен генерировать ответ XML, который похож на это:
<map>
<2010-04>24</2010-04>
<2010-05>45</2010-05>
</map>
Что лучший способ состоит в том, чтобы генерировать динамические имена тега с JAXB?
Вы можете используйте аннотированное свойство @XmlAnyElement
и возвращайте элементы как JAXBElement
s:
private Map<String, Integer> months = ...;
@XmlAnyElement
public List<JAXBElement<Integer>> getMonths() {
List<JAXBElement<Integer>> elements = new ArrayList<JAXBElement<Integer>>();
for (Map.Entry<String, Integer> month: months.entrySet())
elements.add(new JAXBElement(new QName(month.getKey()),
Integer.class, month.getValue()));
return elements;
}
Этот подход уродлив, но не хуже, чем создаваемый им XML.