使用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中文網其他相關文章!