「あるXMLドキュメントを別のXMLドキュメントに挿入するにはどうすればよいですか?」という質問の主要部分を理解することができました。得られた結果は機能しますが、印刷されたXMLに改行がありません。
s = <<EOF
<application>
<email>
<host>mail.test.com</host>
<port>25</port>
</email>
</application>
EOF
p = <<EOF
<auth>
<user>godber</user>
<pass>foo</pass>
</auth>
EOF
subdoc = REXML::Document.new(p)
doc = REXML::Document.new(s)
doc.root.insert_after( '//email', subdoc.root )
doc.write
これにより、次のように出力されます。これは、改行なしで電子メールの終了タグの直後に認証タグが開始されていることがわかります。
<application>
<email>
<host>mail.test.com</host>
<port>25</port>
</email><auth>
<user>godber</user>
<pass>foo</pass>
</auth>
</application>
実際、これを終えたとき、最後の行を次のように変更できることに気づきました。
doc.write( $stdout, 2 )
これはrexmlチュートリアルで明確に書かれていましたが、他の何かが間違っていると思い込んで見落としていました。他の誰かがこれに戸惑う場合に備えて、私はこれを提出すると思います。誰かがこれらの線に沿ってヒントを持っているなら、私はそれらを聞いてうれしいです。