Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何得到发挥!提供XML响应的框架_Xml_Playframework_Playframework 2.0 - Fatal编程技术网

如何得到发挥!提供XML响应的框架

如何得到发挥!提供XML响应的框架,xml,playframework,playframework-2.0,Xml,Playframework,Playframework 2.0,不知怎的,我不知道怎么玩!为XML响应提供服务。我也不理解文档(你可以找到) 我的目标是创建一个站点地图,因此响应应该是内容类型:application/xml 您将如何更改以下控制器以提供该内容类型 public static Result sitemap() { return ok("<message \"status\"=\"OK\">Hello Paul</message>"); } 公共静态结果站点地图(){ 返回ok(“你好,保罗”); } 播放将正

不知怎的,我不知道怎么玩!为XML响应提供服务。我也不理解文档(你可以找到)

我的目标是创建一个站点地图,因此响应应该是
内容类型:application/xml

您将如何更改以下控制器以提供该内容类型

public static Result sitemap() {
    return ok("<message \"status\"=\"OK\">Hello Paul</message>");
}
公共静态结果站点地图(){
返回ok(“你好,保罗”);
}

播放将正确设置
内容类型
标题,前提是您将其以正确的方式传递到
ok()
方法。例如,如果您返回
字符串
(如您所示),它会认为这是
文本/普通
。你至少有两种方法,最快的(但很难看)是强制内容类型,Jürgen建议将其设置为响应,但事实上的播放有一个快捷方式:

public static Result sitemap() {
    return ok("<message status=\"OK\">Hello Paul</message>").as("text/xml");
}
因此,您可以轻松地使用它:

public static Result index() {
    return ok(views.xml.sitemap.render());
}

当然,该文件是common Play的模板,因此您可以将数据传递给它并在其中进行处理(例如,迭代项目列表等)

您是否尝试将
@BodyParser.Of(Xml.class)
注释添加到
sitemap
-方法中?是的,它仍然提供“文本/普通”:/有不同的方法。。。正如tehlexx在使用@BodyParser注释(使用
response().setContentType(“application/xml”)
设置正确的mime类型)时提到的,或者更简单:使用模板,就像使用HTML页面一样。这可能是生成XML响应的最快方法。哇,太棒了。这很有效。谢谢但是@BodyParser注释不是必需的,response().setContentType(“application/xml”)完成了这项工作。非常感谢你。你为什么不把你的评论作为回答呢?所以我可以把它标记为正确的。内容类型是用xml模板自动设置的吗?不确定,因为json不是这样。是的,它是自动设置的,如果您使用ie.
JsonNode
类似:
返回ok(json.toJson(someObj))它将被设置为
应用程序/json
等。
public static Result index() {
    return ok(views.xml.sitemap.render());
}