2009-07-31 11 views

Odpowiedz

33

Utwórz program zapisujący z kodowaniem UTF-8. Przekaż skrypt jako argument do metody XXSX toXML.

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"); 

Możesz również użyć tego Writera do dołączenia Deklaracji XML.

writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); 
xStream.toXML(object, writer); 
+2

+1 dzięki - właśnie natknął się to & nie można go łatwo znaleźć w dokumentach. – davek

+0

dziękuję, to tylko rozwiązało mój problem. – Jaycee

11

Innym rozwiązaniem byłoby zainicjowanie obiektu XStream za pomocą odpowiedniego kodowania za pośrednictwem sterownika. Korzystanie z DomDriver to będzie wyglądać:

XStream xstream = new XStream(new DomDriver("UTF-8")); 

The (domyślnie) PrettyPrintWriter zostanie owinięty przez OutputStream z prawidłowym kodowaniu. nie mogli Państwo dodać UTF-8 nagłówek tędy jednak ...

+0

Ale DomDriver działa wolno. –

3

Z obecnej wersji XStream @ przykład Jeromy za wyglądałby następująco:

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"); 
Powiązane problemy