web-dev-qa-db-ja.com

ストリームの結果を文字列に変換する方法

Junitで使用したいので、ストリームの結果出力を文字列に変換したいと思います。

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

ありがとうヒョードル

20
user1578363

StreamResultクラスのjavadoc( http://Java.Sun.com/javase/6/docs/api/ )の使用方法をご覧ください。 StreamResultのコンストラクターの1つは、Writerオブジェクトをパラメーターとして受け取ります。 Writerのサブクラスの1つがStringWriterであることがわかります。したがって、StreamResultに書き込まれたものから文字列を取得するには、StringWriterを構築し、それをStreamResultに入れ、SourceをStreamResultに変換し、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();
32
Timo Hahn
StringWriter writer = new StringWriter();
transformer.transform(source, new StreamResult(writer));
String output = writer.toString();
31
nosid

この方法で StringWriter を使用できます。

StringWriter sw = (StringWriter) result.getWriter(); 
StringBuffer sb = sw.getBuffer(); 
String finalstring = sb.toString();
3
aleroot