【问题标题】:XStream fail on trivial xmlXStream 在琐碎的 xml 上失​​败
【发布时间】:2012-09-22 23:48:27
【问题描述】:

我有一个非常简单的 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)

我知道肯定有一些简单的错误,但我看不到。请帮忙。

【问题讨论】:

  • 通常有两个@XStreamAlias("document")注解吗?

标签: java xml xstream


【解决方案1】:

我不敢相信我犯了这个错误。它在第 4 行:

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

我只需要删除“Root.class”,或者用实例替换它。在谷歌搜索和发布此类问题之前检查方法签名和文档的另一个原因...

【讨论】:

    【解决方案2】:

    可能是您缺少 xml 标题行:

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

    但我知道 XStream 不应该需要它。

    【讨论】:

      猜你喜欢
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多