Auparavant, pour lire XML en encodage UTF-8 par Xstream, je me sers DomDriver comme suit:Xstream - manière correcte pour enregistrer XML en UTF-8
XStream xStream = new XStream(new DomDriver("UTF-8"));
Cependant, je me rends compte plus tard c'est Très lent. J'utilise la manière suivante:
Optimize loading speed of xstream
Cela fonctionne bien au moins.
Cependant, plus tard, je me rends compte que la même technique ne peut pas être appliquée pour écrire du XML. Je vais avoir tout ??? personnages.
Ceci est le dernier code réalisable en utilisant DomDriver au cours écrire
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;
}
Le code ci-dessus fonctionne très bien. Afin de correspondre à la méthode read qui n'utilise pas DomDriver, je change le code pour
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;
}
Cette fois, tous mes caractères chinois changements ???
Puis-je savoir quelque chose que j'avais mal fait?
Salut - Que passes-tu comme 'objet' dans la méthode ci-dessus? – ziggy