【发布时间】:2020-10-29 14:22:35
【问题描述】:
所以我有这个控制器。我在响应中附加了一个 xml 字符串,它也是 xml。
@GetMapping(value = "/testxml", consumes = { MediaType.APPLICATION_XML_VALUE },
produces = { MediaType.APPLICATION_XML_VALUE })
public ResponseData getXml(@RequestBody RequestData rData) {
String xml = "<TEST><INNER_TEST>test</INNER_TEST></TEST>";
ResponseData response = new ResponseData();
response.setAge(rData.getAge());
response.setXml(xml);
response.setName(rData.getName());
return response;
}
我期待这个:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<responseData>
<age>17</age>
<name>sample</name>
<xml><TEST><INNER_TEST>test</INNER_TEST></TEST></xml>
</responseData>
但得到了这个:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<responseData>
<age>17</age>
<name>sample</name>
<xml><TEST><INNER_TEST>test</INNER_TEST></TEST></xml>
</responseData>
现在,我知道当 spring boot 编组响应时 (以及其他)会转换为转义字符,但是有没有办法忽略给定的:
-xml 可以是任何形式的 xml。没有格式。可以是 QWERTY 或 12345 或任何东西,只要它是 xml。 - 不能使用 CDATA。必须保留任何 xml 字符串的父响应格式
【问题讨论】:
-
编组时不会。仅当您自己手动编写 XML 时。最好的解决方案是使用 CDATA。
-
哦,好吧。我在 getter (response.getXML()) 上尝试了@XmlCDATA,但它仍然得到响应。有什么想法吗?
-
不确定这是否是默认的 Jaxb 注释。还有什么是用来创建 XML... Jaxb 还是您使用 Jackson...
-
我认为 spring-boot 使用 jackson,但不是 100% 确定。
-
找到了解决办法,请看下面的答案...
标签: java xml spring spring-boot