gpt4 book ai didi

java - XStream fromXML() 异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:18:56 30 4
gpt4 key购买 nike

我正在尝试使用 XStream 包在 Java 中反序列化一个字符串。 XStream 包可以很好地序列化我的类。我从服务器获取XML(不能改变XML格式)并尝试将其节点信息保存到某个类中的相应变量中。我的函数在底部,我试图为 XStream 对象注册一个新的转换器(认为这是因为一个变量是一个字节数组)但仍然没有成功。谁能阐明这些异常(exception)情况?我是否需要注册“MyClass”并为 XStream 编写自己的转换器来处理反序列化我的类(class)?提前致谢。

如果将字符串或 StringReader 对象作为输入传递到 fromXML() 中,则异常:

[Fatal Error] :1:1: Content is not allowed in prolog.
com.thoughtworks.xstream.io.StreamException: : Content is not allowed in prolog.
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:86)
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:66)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)

如果 ByteArrayInputStream 被用作 fromXML() 的输入则异常:

com.thoughtworks.xstream.converters.ConversionException: ByteSize : ByteSize : ByteSize : ByteSize
---- Debugging information ----
message : ByteSize : ByteSize
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : ByteSize : ByteSize
class : MyClass
required-type : MyClass
path : /MyClass/ByteSize
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:861)

static Object fromXmlString(String xml) 
{
XStream xStream = new XStream(new DomDriver());
xStream.registerConverter(new EncodedByteArrayConverter());
//tried all 3 below
//return xStream.fromXML(new StringReader(xml));
//return xStream.fromXML(new ByteArrayInputStream(xml.getBytes()));
return xStream.fromXML(xml);
}

最佳答案

看看这个问题:content not allowed in prolog exception .

“Content not allowed in prolog”通常是指<?xml之前有一些内容文件中的 header (“prolog”)。这是不允许的。

因此,检查以确保 <?xml 之前没有字符在字符串中,而且你没有任何 BOM问题。

关于java - XStream fromXML() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001899/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com