Я получаю исключение «Исключение в потоке» main «com.thoughtworks.xstream.io.StreamException: Невозможно создать XmlPullParser» при десериализации xml. Я добавил следующие DEPENDENCYКак избежать com.thoughtworks.xstream.io.StreamException: Не удается создать XmlPullParser во время десериализации?
xmlpull_1_0_5.jar
xpp3_min-1.1.4.jar
xstream-1.4.8.jar
код теста:
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("name", "chris");
map.put("island", "faranga");
XStream magicApi = new XStream();
magicApi.registerConverter(new MapEntryConverter());
magicApi.alias("root", Map.class);
String xml = magicApi.toXML(map);
System.out.println("Result of tweaked XStream toXml()");
System.out.println(xml);
magicApi.fromXML(xml);
// assert extractedMap.get("name").equals("chris");
// assert extractedMap.get("island").equals("faranga");
}
public static class MapEntryConverter implements Converter {
public boolean canConvert(Class clazz) {
return AbstractMap.class.isAssignableFrom(clazz);
}
public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {
AbstractMap map = (AbstractMap) value;
for (Object obj : map.entrySet()) {
Map.Entry entry = (Map.Entry) obj;
writer.startNode(entry.getKey().toString());
Object val = entry.getValue();
if (null != val) {
writer.setValue(val.toString());
}
writer.endNode();
}
}
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
Map<String, String> map = new HashMap<String, String>();
while (reader.hasMoreChildren()) {
reader.moveDown();
String key = reader.getNodeName(); // nodeName aka element's name
String value = reader.getValue();
map.put(key, value);
reader.moveUp();
}
return map;
}
}
}
Am я misiing некоторая зависимость .Any помощь по этому вопросу будут оценены.
Thoughtworks должен добавить правильное сообщение, указывающее на реальную проблему. Это помогает в ее разрешении. Над банкой решена проблема. –