gpt4 book ai didi

java - XStream 不会反序列化 XML

转载 作者:行者123 更新时间:2023-11-30 09:31:00 25 4
gpt4 key购买 nike

我使用 XStreamDomDriver 来序列化和反序列化 DefaultStyledDocument 对象,因此我在数据库中保存和检索它的状态。序列化部分进行得很顺利,但是当它尝试反序列化时,会抛出异常:

[Fatal Error] :92:51: Character reference "&#
Exception in thread "AWT-EventQueue-0" com.thoughtworks.xstream.io.StreamException: : Character reference "&#

我相信 &# 是文档中的空格字符。

我什至尝试使用不同的驱动程序,例如:StaxDriverJsonHierarchicalStreamDriverJettisonMappedXmlDriver,但没有成功。

我在这里做错了什么?

这是我的代码:

DefaultStyledDocument doc = new DefaultStyledDocument();
//initialize doc
XStream xmlstream = new XStream(new StaxDriver());
String xml = xmlstream.toXML(doc);
//save 'xml' in database

//select from database
DefaultStyledDocument document = (defaultStyledDocument) xmlstream.fromXML(result.getString(1));
//this is where the exception is thrown.

编辑实际上 &# 不是空格字符,因为现在我看到空格字符由 ""表示。 &# 似乎是文档的未编辑(空)部分。序列化它但不反序列化它真的很烦人。

最佳答案

鉴于您在上面的评论中提供的 XML 片段,错误消息是正确的 - 规范禁止某些字符出现在 XML 1.0 文档中即使作为字符引用,并且 U +0000 是这些字符之一。因此 不是格式正确的 XML,解析器拒绝它是正确的。序列化器显然更宽松地允许它被写入。

我建议您探索其他非 XML 方式来表示数据库中的此数据,可能是 BLOB(使用 Java 对象序列化)或类似方式。

关于java - XStream 不会反序列化 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054594/

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