【发布时间】:2023-04-01 19:22:01
【问题描述】:
以前,为了通过 xstream 以 UTF-8 编码读取 XML,我使用 DomDriver 如下:
XStream xStream = new XStream(new DomDriver("UTF-8"));
但是,后来我意识到这非常慢。我使用以下方式:
Optimize loading speed of xstream
这至少可以正常工作。
但是,后来,我意识到不能将相同的技术应用于编写 XML。我会得到所有的???字符。
这是在 write
期间使用 DomDriver 的最后一个可行代码public static boolean toXML(Object object, File file) {
XStream xStream = new XStream(new DomDriver("UTF-8"));
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
xStream.toXML(object, outputStream);
}
catch (Exception exp) {
log.error(null, exp);
return false;
}
finally {
if (false == close(outputStream)) {
return false;
}
outputStream = null;
}
return true;
}
上面的代码工作正常。为了匹配不使用DomDriver的read方法,我将代码改为
public static boolean toXML(Object object, File file) {
XStream xStream = new XStream();
OutputStream outputStream = null;
Writer writer = null;
try {
outputStream = new FileOutputStream(file);
writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
xStream.toXML(object, outputStream);
}
catch (Exception exp) {
log.error(null, exp);
return false;
}
finally {
if (false == close(writer)) {
return false;
}
if (false == close(outputStream)) {
return false;
}
writer = null;
outputStream = null;
}
return true;
}
这一次,我所有的汉字都变成了???
我可以知道我做错了什么吗?
【问题讨论】:
-
嗨 - 您在上述方法中作为“对象”传递了什么?