2012-11-04 10 views
18

Voglio convertire l'output del risultato del flusso in stringa poiché voglio per utilizzarlo in Junit Penso che sia necessario utilizzare lo scrittore di stringhe ma Non sono sicuro di come utilizzarlo esattamente.Come convertire i risultati del flusso nella stringa

StreamResult result = new StreamResult(new File("C:\\file.xml")); 
transformer.transform(source, result); 

Grazie Fedor

risposta

27

Dai un'occhiata alla e imparare ad usare i javadoc della classe StreamResult (http://java.sun.com/javase/6/docs/api/) . Uno dei costruttori di StreamResult accetta come parametro un oggetto Writer. Vedrai che una delle sottoclassi di Writer è StringWriter. Quindi, per ottenere una stringa da quanto scritto su StreamResult, è possibile costruire un StringWriter, inserirlo in StreamResult, trasformare() l'origine in StreamResult e ottenere la stringa da StringWriter.

//create a StringWriter for the output 
StringWriter outWriter = new StringWriter(); 
StreamResult result = new StreamResult(outWriter); 
... 
transformer.transform(source, result); 
StringBuffer sb = outWriter.getBuffer(); 
String finalstring = sb.toString(); 
+0

Ciao Timo, Grazie, ma dove dovrei inserire il convertitore StreamResult result = new StreamResult (nuovo file ("C: \\ file.xml")); –

+0

Bene, puoi inserire il risultato in un file utilizzando StreamResult result = new StreamResult (nuovo file ("C: \\ file.xml")); oppure lo metti in un StringWriter usando StreamResult result = new StreamResult (outWriter); Perché usare un file se lo si desidera in una stringa? –

+0

che cosa rappresenta la "fonte"? –

2

È possibile utilizzare un StringWriter in questo modo:

StringWriter sw = (StringWriter) result.getWriter(); 
StringBuffer sb = sw.getBuffer(); 
String finalstring = sb.toString(); 
+0

questo è quello che stavo cercando – divine

+0

Qual è la differenza tra l'utilizzo di un buffer o no, come in risposta @nosid? –

30
StringWriter writer = new StringWriter(); 
transformer.transform(source, new StreamResult(writer)); 
String output = writer.toString(); 
+0

Ho effettuato l'accesso per votare. Grazie :) – cngkaygusuz

Problemi correlati