繁体   English   中英

如何将地图转换为XML

[英]How to convert a Map to an XML

我有一个HashMap,我想将其转换为XML文件。 教程演示了如何使用XStream进行此操作,并且效果很好。 但是,就我而言,我不需要将XML解组到Map。 因此,解组方法变得多余。 XStream中还有另一种方法可以在不实现unmarshall方法的情况下完成我想做的事情。 还是有另一个我可以用来完成此操作的XML友好对象?

我决定扩展MapConverter并覆盖其编组方法:

 public static class MapEntryConverter extends MapConverter {

public MapEntryConverter(Mapper mapper) {
    super(mapper);     
}

public boolean canConvert(Class clazz) {
    return ListMultimap.class.isAssignableFrom(clazz);
}

public void marshal(Object value, HierarchicalStreamWriter writer,
    MarshallingContext context) {

    ListMultimap<String, String> map = (ListMultimap<String, String>) value;
    for (String key : map.keys()) {
    writer.startNode(key);
    writer.setValue(map.get(key).get(0));
    writer.endNode();
    }
}


}

编组地图时,我使用此转换器:

    ListMultimap<String, String> multimap = LinkedListMultimap.create();
multimap.put("x", "1");
multimap.put("x", "2");
multimap.put("y", "3");

XStream xStream = new XStream(new DomDriver());
xStream.registerConverter(new MapEntryConverter(xStream.getMapper()));

xStream.alias("add", multimap.getClass());
String xml = xStream.toXML(multimap);
System.out.println(xml);

如果您需要实现一半的接口(OO纯粹主义者不寒而栗),最好的方法可能是这样做:

public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
    throw new UnsupportedOperationException("Write this message");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM