2012-11-04 3 views
18

Chcę przekonwertować wynik wyniku strumienia na ciąg znaków, ponieważ chcę, aby używał go w Junit. Myślę, że muszę użyć pisarza napisów, ale nie wiem, jak dokładnie go użyć.Jak przekonwertować wyniki strumienia na ciąg

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

Dzięki Fedor

Odpowiedz

27

przyjrzeć się i nauczyć się korzystać z Javadocs klasy StreamResult (http://java.sun.com/javase/6/docs/api/) . Jeden z konstruktorów StreamResult pobiera obiekt Writer jako parametr. Zobaczysz, że jedną z podklas Writer jest StringWriter. Aby uzyskać ciąg od tego, co jest napisane do StreamResult, można skonstruować StringWriter, umieścić go w StreamResult, transform() Source do StreamResult i uzyskać ciąg od 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

Witaj Timo, dzięki, ale gdzie powinienem umieścić konwerter StreamResult result = new StreamResult (nowy plik ("C: \\ file.xml")); –

+0

Cóż, albo umieść wynik w pliku za pomocą StreamResult result = new StreamResult (nowy plik ("C: \\ file.xml")); lub umieścisz go w StringWriter za pomocą StreamResult result = new StreamResult (outWriter); Po co używać pliku, jeśli chcesz go w ciągu znaków? –

+0

co oznacza "źródło"? –

2

Można użyć StringWriter w ten sposób:

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

to jest ten, którego szukałem – divine

+0

Jaka jest różnica między używaniem bufora, czy nie, jak w odpowiedzi @nosid? –

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

Zalogowałem się tylko po to, aby zagłosować. Dzięki :) – cngkaygusuz