当前位置: 首页 > 面试题库 >

使用JAXB的动态标签名称

孙思源
2023-03-14
问题内容

我正在使用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编组器,它可以自动将数字签名添加到xml内容中。 例如,如果我有一个定义为: 我的xml由marshaller生成,看起来像: 我希望它看起来像: 我希望有办法通过马歇尔做到这一点?如果没有,也许还有其他简单的方法来签署xml? 提前致谢

  • 问题内容: 我尝试编写一个React组件。对于html标题标签(h1,h2,h3等),其中标题优先级根据我们在道具中定义的优先级动态变化。 这是我尝试做的。 预期输出: 这是行不通的。有什么可能的方法可以做到这一点? 问题答案: 无法就地执行此操作,只需将其放在变量中(首字母大写):

  • 我已经阅读了这里的文章和在使用JAXB时处理数字签名的示例代码,并且遇到了一个问题,我认为是JAXB封送将名称空间引入“signedinfo”元素。 我定义了一个XSD,它将被用不同编程语言实现的多个应用程序使用。我将XSD编译为JAXB注释类,供我的实现(Jersey JAX-RS和JAX-WS)使用。我目前拥有的流量如下: JAXB对象使用适当的数据创建或从远程应用程序传递。 按照Blaise

  • 本文向大家介绍MyBatis使用动态SQL标签的小陷阱,包括了MyBatis使用动态SQL标签的小陷阱的使用技巧和注意事项,需要的朋友参考一下  MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plai

  • 我在这些论坛上读到了很多答案,还有其他的博客文章,但我似乎无法将这些部分联系起来。 因此,我们从包含映射属性的基本POJO开始。已经确定了如何包装它,但这会返回一些值。我要做的是获取then名称(又称标签),并使其成为有效的XML“属性”。所以我们会得到一些价值。 我发现了一个示例(如果我能再次找到它,将链接),如下所示: 这工作得很好,但我在Bean/Pojo类中使用了它,该类与GWT前端共享,

  • 我陷入了一个棘手的问题,我应该使用JAXB库取消marshaX输入流,除了XML结构没有帮助。 我的问题是:标记用于值为>的的