私はXStreamのを使用して、次のようなフィールドを持つクラスを持っている:リストからフラットなXML構造を生成できるXStreamカスタムコンバータ?
private Map<String, String> data;
私はこのようなXML出力を生成したい:
<key1>test data</key1>
<key2>test data</key2>
<key3>test data</key3>
だから私はマップキーになりたいです素子。 mapvalueをXML値にして、<data></data>
のような要素にXMLをラップすることは望ましくありません。誰かがこれを行うサンプルコード、またはそれに類するものを指し示すことができますか?
UPDATE
これだけのスニペット、ルート要素があります。
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が作成された疑問のようです。 –