Per le FAQ di XStream il parser predefinito non conserva la codifica del documento UTF-8 e si deve fornire il proprio codificatore. Come si fa a fare questo?Come si codifica UTF-8 usando il framework XStream?
Grazie!
Per le FAQ di XStream il parser predefinito non conserva la codifica del documento UTF-8 e si deve fornire il proprio codificatore. Come si fa a fare questo?Come si codifica UTF-8 usando il framework XStream?
Grazie!
Creare un writer con codifica UTF-8. Passa il writer come argomento al metodo toXML di XStream.
XStream xstream = new xStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Writer writer = new OutputStreamWriter(outputStream, "UTF-8");
xStream.toXML(object, writer);
String xml = outputStream.toString("UTF-8");
È anche possibile utilizzare quel writer per includere la dichiarazione XML.
writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
xStream.toXML(object, writer);
Un'altra soluzione potrebbe essere quella di avviare il XStream-oggetto con codifica corretta, tramite un driver. Utilizzando il DomDriver questo sarebbe simile:
XStream xstream = new XStream(new DomDriver("UTF-8"));
L'(default) PrettyPrintWriter sarà avvolto da un OutputStream con la codifica corretta. Non si poteva aggiungere l'UTF-8 di testa in questo modo però ...
Ma DomDriver è lento. –
Con una versione corrente di Xstream, @ l'esempio di Jeromy sarebbe simile a questa:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
HierarchicalStreamWriter xmlWriter = new PrettyPrintWriter(writer);
xstream.marshal(object, xmlWriter);
return new String(stream.toByteArray(), "UTF-8");
+1 grazie - appena siamo imbattuti in questo & non riuscivo a trovarlo facilmente nei documenti. – davek
grazie, ha appena risolto il mio problema. – Jaycee