XStream ConversionException第二次解析XML文件

时间:2012-05-24 08:43:11

标签: java android xml exception xstream

我正在尝试使用XStream从XML文件中读取TreeMap(我之前也使用XStream创建了XML文件)。

我只是在类

的静态方法中执行此操作
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)
[...]

使用相同的文件。实际上,如果我尝试读取文件然后将其作为String传递给XStream,我会得到相同的异常(但是XML String创建正常)。

是否有人知道原因可能是什么或遇到过同样的问题并知道如何解决?

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,这似乎是TreeMap和Android的一个问题...现在使用HashMap,工作正常:)