2012-09-22 37 views
0

我有非常簡單的XML文件:XStream的失敗瑣碎的XML

testSimple2.txt

<root> 
    <document> 
    </document> 
</root> 

但出於某種原因,我不能使用XStream反序列化。

Root.java

@XStreamAlias("root") 
public class Root { 

@XStreamAlias("document") 
static public class Document { 
} 
@XStreamAlias("document") 
Document document; 

} 

Main.java

主要代碼:

XStream xstream = new XStream(); 
xstream.autodetectAnnotations(true); 
xstream.processAnnotations(Root.class); 
Root newJoe = (Root) xstream.fromXML(new File("testSimple2.txt"), Root.class); //Exception here 

以下異常被拋出。

com.thoughtworks.xstream.converters.ConversionException: Element document of type verySimple.Root$Document is not defined as field in type java.lang.Class 
---- Debugging information ---- 
class    : verySimple.Root 
required-type  : verySimple.Root 
converter-type  : com.thoughtworks.xstream.converters.reflection.ReflectionConverter 
path    : /root/document 
line number   : 3 
version    : null 
------------------------------- 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.writeValueToImplicitCollection(AbstractReflectionConverter.java:403) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:334) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) 
    at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) 
    at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) 
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1058) 
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1042) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1006) 
    at verySimple.RootProcess.main(RootProcess.java:26) 

我知道必須有一些簡單的錯誤,但我不能看到它。請幫忙。

+0

通常有兩個'@XStreamAlias(「document」)'註釋嗎? –

回答

1

我不敢相信我犯了這個錯誤。它在第四行:

Root newJoe = (Root) xstream.fromXML(new File("testSimple2.txt")); 

我只需要刪除「Root.class」,或者將其替換爲實例。還有一個原因是在Google搜索和發佈這樣的問題之前檢查方法簽名和文檔...

0

這可能是你缺少的XML標題行:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <document> 
    </document> 
</root> 

但我知道的XStream不應該需要一個。