[英]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.