使用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属性并将元素返回为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丑陋。
以上是 使用JAXB的动态标签名称 的全部内容, 来源链接: utcz.com/qa/415729.html