2009-07-31 15 views

cevap

33

UTF-8 kodlaması ile bir yazar oluşturun. Yazarı XStream'in toXML yöntemine bir argüman olarak geçirin.

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

Ayrıca XML Deklarasyonu içerecek şekilde Writer kullanabilir.

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

+1 sayesinde - sadece bu & tökezledi dokümanlar içinde kolayca bulunamadı. – davek

+0

Teşekkürler, sorunumu çözdüm. – Jaycee

11

Diğer bir çözüm, bir sürücü vasıtasıyla, doğru kodlama XStream-nesneyi başlatmak olacaktır.

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

(varsayılan) PrettyPrintWriter

doğru kodlaması ile OutputStream tarafından sarılmış olacaktır: gibi bu görünecektir DomDriver kullanma. Sen şu şekilde görünecektir Jeromy en Örneğin @, XStream güncel bir sürümü ile ... Ancak bu şekilde

+0

Ancak DomDriver yavaş. –

3

UTF-8 başlık eklemek olamazdı:

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