るいもの戯れ言

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)