使用JAXB的动态标签名称

我正在使用Jersey和JAXB构建简单的RESTful Web服务,我将HashMap从’String’转换为’Integer’:

2010-04 -> 24 

2010-05 -> 45

我需要生成一个如下所示的XML响应:

 <map>

<2010-04>24</2010-04>

<2010-05>45</2010-05>

</map>

用JAXB生成动态标签名的最佳方法是什么?

回答:

您可以使用@XmlAnyElement-annotated属性并将元素返回为JAXBElements:

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丑陋。

以上是 使用JAXB的动态标签名称 的全部内容, 来源链接: utcz.com/qa/415729.html

回到顶部