4

任何人都可以告诉我如何使用 XStream 序列化 HashMap?

private HashMap<String,String> attributes;
attributes = new HashMap<String,String>();
attributes.put("Description","Value");
attributes.put("Description2","Value2");
attributes.put("Description3","Value3");

我的 xml 看起来像

<attributes>
       <entry>
           <string>Description</string>
           <string>value</string>
       </entry>
       <entry>
           <string>Description2</string>
           <string>Value2</string>
       </entry>
       <entry>
           <string>Description3</string>
           <string>Value3</string>
       </entry>
    </attributes>

我想要一个像这样的输出

<attributes>
    <attr>
        <description>Description</description>
        <value>Value</value>
    </attr>
    <attr>
        <description>Description2</description>
        <value>Value2</value>
    </attr>
    <attr>
        <description>Description3</description>
        <value>Value</value>
    </attr>
</attributes>

如何使用 XStream 实现这一点?可以用注释吗?

4

1 回答 1

7

如果您使用的是 XStream 1.4.5,您可以使用NamedMapConverter来做您想做的事情。

只需注册显示您希望如何编组地图的转换器,如下例所示:

XStream xstream = new XStream();
NamedMapConverter namedMapConverter = new NamedMapConverter(xstream.getMapper(),"attr","description",String.class,"value",String.class);
xstream.registerConverter(namedMapConverter);
于 2013-11-18T14:17:19.993 回答