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 の配列に変換する Map アダプターを使用できます:
class MapElements { @XmlAttribute public String key; @XmlAttribute public String value; ... } public class MapAdapter extends XmlAdapter<MapElements[], Map<String, String>> { ... }
以上がJAXB を使用してキーと値の要素を含むカスタム XML 形式にマップをマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。