Jörg Schaible wrote: > Hi Raj, > > Raj wrote: > >> Hi >> >> Thanks for quick repsonses. >> >> I have map below. >> >> Map<String,Set<String>> desksDetails = new HashMap<String, >> Set<String>>(); >> >> Map key is "ABC" >> and value is Set holding usernames. >> >> I want to covert this into xml like >> <desk name="ABC"> >> <user name="rpaynter"/> >> <user name="yatesn"/> >> <user name="gnishok"/> >> <user name="bingminc"/> >> <user name="nixmar"/> >> <user name="tanyun"/> >> <user name="choo"/> >> </desk> >> >> I looked into NamedMapConverter but the map here is key,value as String. >> In my case value is collection. >> >> Any pointer will be higly appreciated. > > > Did you try: > > new NamedMapConverter(xstream.getMapper(), "desk", "name", String.class, > null, HashSet.class, true, false, xstream.getConverterLookup()); > > That should be written as: > > <map> > <desk name="ABC"> > <string>rpaynter</string> > <!-- rest omitted --> > </entry> > </map> > > You will have to register an additional NamedCollectionConverter for > HashSet in general though to influence the inner set. However, that would > affect any HashSet in your object graph. > > The only alternative is otherwise a gain a custom converter, probably > derived from the MapConverter.
Actually there's a third option by injecting a modified ConverterLookup: new NamedMapConverter(xstream.getMapper(), "desk", "name", String.class, null, HashSet.class, true, false, new ConverterLookup() { @Override Converter lookupConverterForClass(Class type) { if (type == HashSet.class) { return new NamedCollectionConverter( ... ); } else return xstream.getConverterLookup().lookupConverterForClass(type); } }); You get the idea ... Cheers, Jörg --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email