Junitで使用したいので、ストリーム結果の出力を文字列に変換したいのですが、文字列ライターを使用する必要があると思いますが、正確に使用する方法がわかりません。
StreamResult result = new StreamResult(new File("C:\\file.xml"));
transformer.transform(source, result);
ありがとうヒョードル
Junitで使用したいので、ストリーム結果の出力を文字列に変換したいのですが、文字列ライターを使用する必要があると思いますが、正確に使用する方法がわかりません。
StreamResult result = new StreamResult(new File("C:\\file.xml"));
transformer.transform(source, result);
ありがとうヒョードル
StreamResultクラス(http://java.sun.com/javase/6/docs/api/)のjavadocsを見て、使用方法を学びます。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();
StringWriter writer = new StringWriter();
transformer.transform(source, new StreamResult(writer));
String output = writer.toString();
StringWriterは次のように使用できます。
StringWriter sw = (StringWriter) result.getWriter();
StringBuffer sb = sw.getBuffer();
String finalstring = sb.toString();