5
我使用XStream和有一個類與字段類似如下:可以從List生成平面XML結構的XStream自定義轉換器?
private Map<String, String> data;
我想產生這樣的XML輸出:
<key1>test data</key1>
<key2>test data</key2>
<key3>test data</key3>
所以我希望地圖的關鍵是元件。 mapvalue是XML值,我不希望將XML包裝在一個元素中,例如<data></data>
。任何人都可以指向示例代碼,這樣做,或類似的東西?
UPDATE
這只是一個代碼段,有一個根元素。
更新2
定製轉換器的代碼,我貼在下面幾乎工作。我得到一個平坦的結構,但我需要刪除外部元素。任何想法呢?
//this is the result need to remove <data>
<data>
<key1>test data</key1>
<key2>test data</key2>
<key3>test data</key3>
</data>
這是代碼
public class MapToFlatConverter implements Converter{
public MapToFlatConverter() {
}
@Override
public boolean canConvert(Class type) {
return Map.class.isAssignableFrom(type);
}
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
Map<String, String> map = (Map<String, String>) source;
for (Map.Entry<String, String> entry : map.entrySet()) {
writer.startNode(entry.getKey());
writer.setValue(entry.getValue().toString());
writer.endNode();
}
}
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
//not needed at this time
return null;
}
}
有效的XML不能有多個根元素。 – dummy
這只是一個片段。有一個根元素。我只是想讓列表元素顯得平坦。 –
什麼是近票?這似乎是一個SO創建的問題。 –