怎么玩!提供XML响应的框架

Cra*_*ayl 4 xml playframework playframework-2.0

不知何故,我无法弄清楚如何玩!提供XML响应.我也不了解文档(你可以在这里找到).

我的目标是创建一个站点地图,因此响应应该是一个 Content-Type: application/xml;

如何更改以下控制器以提供Content-Type?

public static Result sitemap() {
    return ok("<message \"status\"=\"OK\">Hello Paul</message>");
}
Run Code Online (Sandbox Code Playgroud)

bie*_*ior 12

Content-type如果您将以ok()正确的方式将其传递给方法,则播放将正确设置标题.举个例子,如果你要回来String(正如你所说的那样)它会考虑那个text/plain.你有至少2种方式,最快(但很难看)是强制内容类型,Jürgen建议将其设置为响应,但事实上Play有一个快捷方式:

public static Result sitemap() {
    return ok("<message status=\"OK\">Hello Paul</message>").as("text/xml");
}
Run Code Online (Sandbox Code Playgroud)

另一方面,使用XML模板可能比使用粘合字符串构建它更好,更清晰...只需创建XML文件:

/app/views/sitemap.scala.xml:

<message status="OK">John Doe</message>
Run Code Online (Sandbox Code Playgroud)

所以你可以像使用它一样简单:

public static Result index() {
    return ok(views.xml.sitemap.render());
}
Run Code Online (Sandbox Code Playgroud)

当然这个文件是Play的常用模板,因此您可以将数据传递给它并在内部进行处理(即迭代项目列表等)