Динамические имена тега с JAXB

Я использую Джерси и JAXB для создания простого УСПОКОИТЕЛЬНОГО веб-сервиса, у меня есть HashMap 'String' к 'Целому числу':

2010-04 -> 24 
2010-05 -> 45

Я должен генерировать ответ XML, который похож на это:

 <map>
   <2010-04>24</2010-04>
   <2010-05>45</2010-05>
 </map>

Что лучший способ состоит в том, чтобы генерировать динамические имена тега с JAXB?

15
задан shane 20 July 2010 в 19:16
поделиться

1 ответ

Вы можете используйте аннотированное свойство @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.

28
ответ дан 1 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: