全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring MVC怎么返回XML数据 @RestController注解

Spring MVC 中 @RestController 返回 XML 需添加 jackson-dataformat-xml 依赖,用 @JacksonXmlRootElement 和 @JacksonXmlProperty 标注实体类,并在控制器方法中指定 produces = MediaType.APPLICATION_XML_VALUE。

Spring MVC 中使用 @RestController 返回 XML 数据,核心在于让 Spring 能正确序列化对象为 XML,并设置响应的 Content-Type 为 application/xml。默认情况下,@RestController 依赖 Jackson(处理 JSON),要支持 XML 需额外配置和依赖。

添加 Jackson XML 序列化支持依赖

在 Maven 的 pom.xml 中引入 jackson-dataformat-xml


    com.fasterxml.jackson.dataformat
    jackson-dataformat-xml

该依赖会自动注册 XmlMapper,Spring Boot 2.2+ 会自动识别并启用 XML 消息转换器(Jackson2ObjectMapperBuilder + MappingJackson2XmlHttpMessageConverter)。

确保实体类支持 XML 序列化

用 Jackson 的注解标注 POJO,例如:

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

@JacksonXmlRootElement(localName = "user")
public class User {
    @JacksonXmlProperty(localName = "id")
    private Long id;
    
    @JacksonXmlProperty(localName = "name")
    private String name;
    
    // getter/setter 省略
}
  • @JacksonXmlRootElement:指定根元素名
  • @JacksonXmlProperty:控制字段对应 XML 元素名及是否作为属性(加 isAttribute = true
  • 字段需有 public getter,或开启 setVisibility 配置才能访问私有字段

控制器方法声明 Accept 和 Produces

显式指定支持 XML 响应,推荐写法:

@GetMapping(value = "/user/{id}", produces = MediaType.APPLICATION_XML_VALUE)
public User getUser(@PathVariable Long id) {
    return new User(id, "Alice");
}
  • produces = MediaType.APPLICATION_XML_VALUE 告诉 Spring 此接口只返回 XML
  • 客户端请求头带 Accept: application/xml 时才会匹配(若同时支持 JSON 和 XML,可写 produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE}
  • 不写 produces 时,Spring 会根据请求头 Accept 自动协商,但需确保客户端明确指定

验证与调试小技巧

如果返回仍是 JSON 或报 406 Not Acceptable 错误,检查以下几点:

  • 确认依赖已生效(IDE 中查看是否引入了 jackson-dataformat-xml 及其 transitive 依赖如 woodstox-core
  • 启动日志中搜索 XmlHttpMessageConverter,看是否被注册
  • cURL 测试时带上头:curl -H "Accept: application/xml" http://localhost:8080/user/1
  • 浏览器直接访问通常发 text/html,不会触发 XML,建议用 Postman 或 curl


# html  # js  # json  # 浏览器  # app  # curl  # spring mvc  # mvc  # spring  # spring boot  # postman  # maven  # xml 


相关文章: 合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  Swift中switch语句区间和元组模式匹配  网站制作免费,什么网站能看正片电影?  如何在Windows服务器上快速搭建网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何快速查询网址的建站时间与历史轨迹?  Python多线程使用规范_线程安全解析【教程】  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  油猴 教程,油猴搜脚本为什么会网页无法显示?  小建面朝正北,A点实际方位是否存在偏差?  建站之星如何快速解决建站难题?  如何在万网开始建站?分步指南解析  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  广东企业建站网站优化与SEO营销核心策略指南  如何快速启动建站代理加盟业务?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  简单实现Android验证码  如何高效配置香港服务器实现快速建站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何在IIS7中新建站点?详细步骤解析  如何用wdcp快速搭建高效网站?  建站之星如何开启自定义404页面避免用户流失?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何基于PHP生成高效IDC网络公司建站源码?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  清除minerd进程的简单方法  如何选择网络建站服务器?高效建站必看指南  已有域名和空间如何快速搭建网站?  如何在阿里云服务器自主搭建网站?  外贸公司网站制作哪家好,maersk船公司官网?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站主机服务器选型指南与性能优化方案解析  专业商城网站制作公司有哪些,pi商城官网是哪个?  制作网站公司那家好,网络公司是做什么的?  常州自助建站费用包含哪些项目?  ,有什么在线背英语单词效率比较高的网站?  建站之星伪静态规则如何设置?  招商网站制作流程,网站招商广告语?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  如何设置并定期更换建站之星安全管理员密码?  javascript中的try catch异常捕获机制用法分析  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  音响网站制作视频教程,隆霸音响官方网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。