首頁 >Java >java教程 >如何使用 JAXB 將映射編組為具有鍵值元素的自訂 XML 格式?

如何使用 JAXB 將映射編組為具有鍵值元素的自訂 XML 格式?

DDD
DDD原創
2024-11-13 03:38:02315瀏覽

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 陣列:

class MapElements {
    @XmlAttribute
    public String key;
    @XmlAttribute
    public String value;
    
    ...
}

public class MapAdapter extends XmlAdapter<MapElements[], Map<String, String>> {
    ...
}

以上是如何使用 JAXB 將映射編組為具有鍵值元素的自訂 XML 格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn