Playframeworkのテンプレートエンジン、Twirlは、XMLも生成できるようだ。通常はXXX.scala.htmlといったファイル名にするが、これをXXX.scala.xmlとすれば良い。
ただ、デフォルトだとXML宣言を書いてくれない。これはWritableを実装してやれば良い。
val xmlWriteable = new Writeable[Xml](
xml => ByteString("""<?xml version="1.0" encoding="UTF-8"?>""" + xml.toString, ByteString.UTF_8),
Some("text/xml")
)
あとはコントローラで書き出す時に、このWritableを指定してやる。
Ok(
views.xml.atom(recs, settings)
)(xmlWriteable)