首页  >  文章  >  Java  >  如何在 JAXB 中将映射编组为'值”格式?

如何在 JAXB 中将映射编组为'值”格式?

DDD
DDD原创
2024-11-21 08:59:09206浏览

How to Marshal a Map into `value` Format in JAXB?

JAXB:将 Map 编组为 value格式

Context

JAXB 本身支持将 Map 编组为如下结构:

<map>
  <entry>
    <key> KEY </key>
    <value> VALUE </value>
  </entry>
  <entry>
    <key> KEY2 </key>
    <value> VALUE2 </value>
  </entry>
  ...
</map>

但是,在某些情况下,可能需要生成 XML,其中key 成为元素名称,value 成为其内容,如下所示:

<map>
  <key> VALUE </key>
  <key2> VALUE2 </key2>
 ...
</map>

解决方案 1:避免动态元素名称

通常建议避免这种类型的 XML 生成,因为它会在运行时引入对地图内容的依赖。这可能会影响 XML 模式 (XSD) 中定义的接口契约。

相反,请考虑使用枚举类型作为 Map 的键,以确保元素名称在编译时已知,从而允许 JAXB 生成模式限制 XML 中的元素。

解决方案 2:自定义 XML 结构

将默认生成的结构简化为某些内容例如:

<map>
    <item key="KEY" value="VALUE"/>
    <item key="KEY2" value="VALUE2"/>
</map>

实现一个自定义 MapAdapter,将 Map 转换为 MapElements 数组。

以上是如何在 JAXB 中将映射编组为'值”格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn