我正在尝试在我的 Android 应用程序中使用 XStream(我之前也使用 XStream 创建过 XML 文件)从 XML 文件中读取 TreeMap。
我只是在一个类的静态方法中做到这一点
File f = new File(Environment.getExternalStorageDirectory(), "map.xml");
XStream xStream = new XStream(new DomDriver());
@SuppressWarnings("unchecked")
TreeMap<String,Object> map = (TreeMap<String,Object>) xStream.fromXML(f);
然后我第一次毫无问题地使用 TreeMap 中的值。
问题是,如果我第二次调用该方法,无论我是在第一次执行之后还是在一段时间之后执行它都没有关系,我得到这个:
05-24 08:33:53.404: E/AndroidRuntime(15543): FATAL EXCEPTION: main
05-24 08:33:53.404: E/AndroidRuntime(15543): com.thoughtworks.xstream.converters.ConversionException: null : null
05-24 08:33:53.404: E/AndroidRuntime(15543): ---- Debugging information ----
05-24 08:33:53.404: E/AndroidRuntime(15543): cause-exception : java.lang.NullPointerException
05-24 08:33:53.404: E/AndroidRuntime(15543): cause-message : null
05-24 08:33:53.404: E/AndroidRuntime(15543): class : java.util.TreeMap
05-24 08:33:53.404: E/AndroidRuntime(15543): required-type : java.util.TreeMap
05-24 08:33:53.404: E/AndroidRuntime(15543): converter-type : com.thoughtworks.xstream.converters.collections.TreeMapConverter
05-24 08:33:53.404: E/AndroidRuntime(15543): path : /tree-map
05-24 08:33:53.404: E/AndroidRuntime(15543): version : 0.0
05-24 08:33:53.404: E/AndroidRuntime(15543): -------------------------------
05-24 08:33:53.404: E/AndroidRuntime(15543): at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
05-24 08:33:53.404: E/AndroidRuntime(15543): at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
[...]
05-24 08:33:53.404: E/AndroidRuntime(15543): Caused by: java.lang.NullPointerException
05-24 08:33:53.404: E/AndroidRuntime(15543): at java.util.TreeMap.find(TreeMap.java:277)
05-24 08:33:53.404: E/AndroidRuntime(15543): at java.util.TreeMap.putInternal(TreeMap.java:240)
05-24 08:33:53.404: E/AndroidRuntime(15543): at java.util.TreeMap.put(TreeMap.java:186)
05-24 08:33:53.404: E/AndroidRuntime(15543): at java.util.AbstractMap.putAll(AbstractMap.java:381)
05-24 08:33:53.404: E/AndroidRuntime(15543): at com.thoughtworks.xstream.converters.collections.TreeMapConverter.populateTreeMap(TreeMapConverter.java:150)
[...]
使用相同的文件。事实上,如果我尝试读取文件,然后将其作为字符串传递给 XStream,我会得到相同的异常(但 XML 字符串创建正常)。
有谁知道可能是什么原因或遇到过同样的问题并知道如何解决?
谢谢!