JAXB を使用してキーと値の要素を含むカスタム XML 形式にマップをマーシャリングする方法

DDD
リリース: 2024-11-13 03:38:02
オリジナル
265 人が閲覧しました

How to Marshal a Map to a Custom XML Format with Key-Value Elements Using JAXB?

JAXB を使用したカスタム XML 形式へのマップのマーシャリング

質問:

どのようにマーシャリングできますかカスタム XML 形式へのマップ。キーと値のペアは value として表されます。要素?

ディスカッション:

マップをマーシャリングするためのデフォルトの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート