簡體   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