する質問をすることでしか得られない、回答やアドバイスがある。883退会済みユーザーXMLからテキストの生成の過程に登場するStringWriterオブジェクトの意味合いについて質問です。ソースコードは次のようなものです。stream.getWriter().toString();上のコードにおいて、StringWriterはなぜ必要なのでしょうか?Transformerが必要なのはわかりますし、そのためにそのFactoryが必要になるのもわかります。マークアップ言語を保持するためのホルダーであるStreamResultも必要なのはわかります。StreamResultオブジェクトを形成するために必要、というのがコードからの答えになるでしょうが、その意味合いを教えていただけなのでしょうか?回答お願いします。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+2XMLはご存知の通り様々なアプリケーション間で情報をやりとりする目的で用いるためのデータの表現形式です。この目的のため、XMLデータはXML形式そのままのテキスト、DOM、Javaオブジェクトなど色々なものとして解釈することができるように意図されたものですが、Java上でこれら様々なものへの写像を表す役割を持っているのがTransformerクラスです。リファレンスを見るとTransformerクラスにはただ一つのtransformメソッドしかありません。写像先の形式がどのようなものなのかはtransformの第二引数であるResultによって決まるように設計されています。リファレンスを見るとResultを実装したクラスには写像先がストリームであることを表すStreamResultだけではなく、DOMを表すDOMResult、Javaオブジェクトを表すJAXBResult等々が用意されていることがわかります。ResultはXMLデータの「入れ物」と考えてもよいのですが、Transformerからみると単にXMLデータの要素などを流し込む先(データシンク)として設計されています。それぞれのResultクラスの都合に応じて流し込まれたデータは特定の形式で蓄積したり、別のデータシンクへパスしたりと様々な振る舞いをするようになっています。StreamResultはXMLデータを文字の列へ変換することを表すデータシンクとして設計されています。OutputStream)を用いる」ように設計されています。そんなわけでStreamResultにあるWriterもしくはOutputStreamは写像した結果の文字列を流し込む先という意味になります。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。11:06大方理解できたと思います。変な質問かもしれませんが、ストリームというと、上流と下流に何があるのか既に決まっているものと考えていたのですが、この場合ですと、上流(データの流れる元)はStreamResultになりますが、下流(データの送信先)はまだ決まっておらず、自由に決めることができるのですか?大方理解できたと思います。11:49そのとおりです。StreamResult自体は具体的な出力先(文字バッファーとかファイルとか)を直接規定しません。それはStreamResultに与えるWriter/OutputStreamのインスタンスが決めることになるので、billさんが想像されているとおりプログラマーが自由に決めることができます。StreamResult自体は具体的な出力先(文字バッファーとかファイルとか)を直接規定しません。それはStreamResultに与えるWriter/OutputStreamのインスタンスが決めることになるので、billさんが想像されているとおりプログラマーが自由に決めることができます。21:33回答ありがとうございました。回答ありがとうございました。キャンセル完了するlink0StreamResultクラスのコンストラクタは複数種類ありますので都合の良いものを選ぶのが良いですが、StringWriterであればバッファつき文字列の文字ストリームなので、XMLを扱うには一番適しているのではないでしょうか。いうのも、XMLはバイナリデータではなく、テキストデータですので。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。09:29すみません、よくわかりませんでした。StreamResultもバッファになるのでしょうか?コンストラクタの引数にStringWriterを指定した場合、イメージ的には、バッファにマークアップ言語を保持する、といった状態になるのでしょうか?すみません、よくわかりませんでした。12:18「StreamResultがバッファになる」がよくわかりませんが、テキストファイルを読み込む際にバッファを使って読み込んでくれるようになります。あと、「マークアップ言語を保持する」と書くと語弊があるかと。「StreamResultがバッファになる」がよくわかりませんが、テキストファイルを読み込む際にバッファを使って読み込んでくれるようになります。あと、「マークアップ言語を保持する」と書くと語弊があるかと。21:33回答ありがとうございました。回答ありがとうございました。解決済javaのxml出力でインデントと改行が思うようにできません。解決済javaでコマンドラインを実行できない解決済BinaryWriterの追加書き込み方法を教えてください。頂いたご意見への回答は行っておりません。