Spring Boot 返回XML

一般RESTful都是返回json,有时候可能需要返回xml,我们该如何操作呢?

Jackson

Maven增加jar文件导入

<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency><groupId>org.codehaus.woodstox</groupId><artifactId>woodstox-core-asl</artifactId><version>4.1.0</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId></dependency>

模型对象

@JacksonXmlRootElement(localName = "user")
public class User {private Long id;@JacksonXmlCData@JacksonXmlProperty(localName = "Content")private String content;

注解说明

@JacksonXmlRootElement注解中有localName属性,该属性如果不设置,那么生成的XML最外面就是
<User></User>,而不是<user></user>@JacksonXmlCData注解是为了生成<![CDATA[text]]>
这样的数据,如果你不需要,可以去掉@JacksonXmlProperty注解通常可以不需要,但是如果你想要你的xml节点名字,首字母大写。比如例子中的Content,那么必须加这个注解,并且注解的localName填上你想要的节点名字。最重要的是!实体类原来的属性content必须首字母小写!否则会被识别成两个不同的属性。有了上面的配置,在Controller返回实体类的时候,就会像转换Json一样,将实体类转换为xml对象了。有时候你的浏览器并不能识别xml,是因为你返回的content-type不是xml,可以通过修改@RequestMapping注解的produces属性来修改:

输出xml

@RequestMapping(value = "/user", method = RequestMethod.GET, produces = { "application/xml" })
@ResponseBody
public User user() {return new User(1L, "zsh");
}

提交xml

同样的,你也可以将xml请求自动转换为实体:

@RequestMapping(value = "/user", method = RequestMethod.POST, consumes = { "text/xml" }, produces = {"application/xml" })@ResponseBodypublic User post(@RequestBody User user) {return user;}

JAXB相关的重要Annotation

	@XmlRootElement:表示映射到根目录标签元素@XmlElement:表示映射到子元素@XmlAttribute:表示映射到属性@XmlElementWrapper :表示类型是集合元素的子元素的上层目录

:@XmlElementWrapper仅允许出现在集合属性上。

UserControllerTest

public class UserControllerTest {@Testpublic void testPost() throws Exception {// 直接字符串拼接StringBuilder builder = new StringBuilder();// xml数据存储builder.append("<user><id>1</id><Content>JE-GE</Content></user>");String data = builder.toString();System.out.println(data);String url = "http://localhost:8080/user";CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);httpPost.setEntity(new StringEntity(data, "text/xml", "utf-8"));CloseableHttpResponse response = httpClient.execute(httpPost);HttpEntity entity = response.getEntity();String content = EntityUtils.toString(entity);System.out.println("content:" + content);}
}

如果感觉不错的话请给我点赞哟!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot application.properties 常用配置

SPRING CONFIG (ConfigFileApplicationListener) spring.config.name配置文件名称&#xff0c;默认为application spring.config.location配置文件存放位置&#xff0c;默认为classpath目录下 mvc spring.mvc.async.request-timeout设定async请求的超时时间&#xff0c;以毫…

没有bug队——加贝——Python 练习实例 33,34

目录 33.题目&#xff1a; 小知识&#xff1a; 参数 返回值 我们换种写法&#xff1a; 34.题目&#xff1a; 我们也换种写法&#xff1a; 33.题目&#xff1a; 按逗号分隔列表。 小知识&#xff1a; join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串…

没有bug队——加贝——Python 练习实例 35,36

目录 35.题目&#xff1a;文本颜色设置。 小知识&#xff1a; 36.题目&#xff1a;求100之内的素数。 何为素数&#xff1f; 35.题目&#xff1a;文本颜色设置。 class bcolors:HEADER \033[95mOKBLUE \033[94mOKGREEN \033[92mWARNING \033[93mFAIL \033[91mENDC …

C语言各种类型数据的输出显示

之前我们使用 puts 来输出字符串。puts 是 output string 的缩写&#xff0c;只能用来输出字符串&#xff0c;不能输出整数、小数、字符等&#xff0c;我们需要用另外一个函数&#xff0c;那就是 printf。 printf 比 puts 更加强大&#xff0c;不仅可以输出字符串&#xff0c;…

没有bug队——加贝——Python 练习实例 37,38

目录 37.题目&#xff1a;对10个数进行排序。 Python sort()方法 语法 参数 返回值 Python sorted函数及用法 语法 返回值 38.题目&#xff1a;求一个3*3矩阵主对角线元素之和。 37.题目&#xff1a;对10个数进行排序。 程序分析&#xff1a;可以利用选择法&#xff…

C语言中的整数

整数是编程中常用的一种数据&#xff0c;C语言通常使用int来定义整数&#xff08;int 是 integer 的简写&#xff09;。 现代操作系统中&#xff0c;int 一般占用 4 个字节&#xff08;Byte&#xff09;的内存&#xff0c;共计 32 位&#xff08;Bit&#xff09;。如果不考虑正…

没有bug队——加贝——Python 39,40

目录 39.题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 40.题目&#xff1a;将一个数组逆序输出。 39.题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 程序分析…

C++ PAT 乙级 ——1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

C PAT 乙级 ——1002 读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 题目分析 &#xff08;1&#xff09;由于自然数n的范围要求小于10^100&#xff0c;unsigned long long不满足要求&#xff0c;采用int型数组也难以输入&…

C语言中的二进制、八进制和十六进制的表示

二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的&#xff0c;表示一个十进制数字不需要任何特殊的格式。但是&#xff0c;表示一个二进制、八进制或者十六进制数字就不一样了&#xff0c;为了和十进制数字区分开来&#xff0c;必须采用某种特殊的写法&#xf…

没有bug队——加贝——Python 41,42

41.题目&#xff1a;模仿静态变量的用法。 python中是不支持静态变量的&#xff0c;所以可以通过以下的方法来实现静态变量的功能&#xff1a; 代码1&#xff1a; class CTest(object):#python静态变量实现方法i__initNonedef __new__(cls,value):if cls.i__init is None:cl…

C语言中的正负数及其输出

在数学中&#xff0c;数字有正负之分。在C语言中也是一样&#xff0c;short、int、long 都可以带上正负号&#xff0c;示例 //负数 short a1 -10; short a2 -0x2dc9; //十六进制 //正数 int b1 10; int b2 0174; //八进制 int b3 22910; //负数和正数相加 long c (-9)…

C++ PAT 乙级 ——1003 我要通过

题目详情 答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件&#xff0c;系统就输出“答案正确”&#xff0c;否则输出“答案错误”。 得到“答案正确”的条件是&#xff1a; 字符串中必须仅有 P、 A、…

C语言中的小数

小数分为整数部分和小数部分&#xff0c;它们由点号.分隔&#xff0c;例如 0.0、78.0、4.023、0.27、-927.148 -0.57 等都是合法的小数&#xff0c;这是最常见的小数形式&#xff0c;我们将它称为十进制形式。 此外&#xff0c;小数也可以采用指数形式&#xff0c;例如 7.2510…

没有bug队——加贝——Python 43,44

目录 43.题目&#xff1a;模仿静态变量(static)另一案例。 44 - Python 两个矩阵相加 43.题目&#xff1a;模仿静态变量(static)另一案例。 程序分析&#xff1a;演示一个python作用域使用方法 #43 class Num:nNum 1def inc(self):self.nNum 1print (nNum %d % self.nN…

数学建模学习笔记(一)——层次分析模型

1.模型简介 层次分析模型主要应用于综合评价类问题&#xff0c;例如&#xff1a;怎样购买最划算、怎样养殖才能获得最大经济效益等等。 2.下面使用一道例题来说明这个问题 问题&#xff1a;你想要购置一台个人电脑&#xff0c;考虑价格、性能等因素&#xff0c;如何做出决策…

C语言英文字符的使用

字符的表示 字符类型由单引号’ 包围&#xff0c;字符串由双引号" "包围。 下面的例子演示了如何给 char 类型的变量赋值&#xff1a; //正确的写法 char a 1; char b $; char c X; char d ; // 空格也是一个字符//错误的写法 char x 中; //char 类型不能…

没有bug队——加贝——Python 45,46

目录 45.题目&#xff1a;统计 1 到 100 之和。 46.题目&#xff1a;求输入数字的平方&#xff0c;如果平方运算后小于 50 则退出。 实现1 实现2 Python While 循环语句 跳过循环 无限循环 循环使用 else 语句 45.题目&#xff1a;统计 1 到 100 之和。 #45 tmp 0 for…

没有bug队——加贝——Python 47,48

目录 47.题目&#xff1a;两个变量值互换。 实现1 实现2 48.题目&#xff1a;数字比较。 47.题目&#xff1a;两个变量值互换。 实现1 a 10 b 20 print(x ,a ,y ,b) a,b b,a print(x ,a ,y ,b) 输出&#xff1a; 实现2 #47 def exchange(a,b):a,b b,areturn (a,…

Latex笔记(一)—— 复杂表格的制作

引言 表格是论文写作中的重要一环&#xff0c;尤其是较为复杂的三线表的制作。 在网上寻找了很久发现没有比较综合的解释方法&#xff0c;因此将查阅的关于复杂三线表的制作的资料总结成了一篇笔记。 由于笔记是用Latex写作的&#xff0c;因此这里只放上Latex生成的pdf的截图&…

C语言转义字符的使用

字符集&#xff08;Character Set&#xff09;为每个字符分配了唯一的编号&#xff0c;我们不妨将它称为编码值。在C语言中&#xff0c;一个字符除了可以用它的实体&#xff08;也就是真正的字符&#xff09;表示&#xff0c;还可以用编码值表示。这种使用编码值来间接地表示字…