使用 JAXB 将映射编组为自定义 XML 格式
问题:
我们如何编组映射到自定义 XML 格式,其中键值对表示为
讨论:
编组映射的默认 JAXB 方法生成具有如下结构的 XML:
<map> <entry> <key>KEY</key> <value>VALUE</value> </entry> <entry> <key>KEY2</key> <value>VALUE2</value> </entry> </map>
但是,有时我们可能需要 XML 采用自定义格式:
<map> <key>VALUE</key> <key2>VALUE2</key2> </map>
解决方案 1:限制 XML 契约
不建议这样做,因为它会使 XML 元素依赖于地图的运行时内容,这对于界面层的使用来说是不受欢迎的。相反,我们建议使用枚举类型作为映射的键。
public enum KeyType { KEY, KEY2; } @XmlJavaTypeAdapter(MapAdapter.class) Map<KeyType, String> mapProperty;
解决方案 2:简化默认结构
如果我们希望简化默认生成的结构结构为:
<map> <item key="KEY" value="VALUE"/> <item key="KEY2" value="VALUE2"/> </map>
我们可以使用地图适配器将地图转换为 MapElements 数组:
class MapElements { @XmlAttribute public String key; @XmlAttribute public String value; ... } public class MapAdapter extends XmlAdapter<MapElements[], Map<String, String>> { ... }
以上是如何使用 JAXB 将映射编组为具有键值元素的自定义 XML 格式?的详细内容。更多信息请关注PHP中文网其他相关文章!