近期接到需求,第三方会给我们回调一个XML的数据请求,那么就需要去编写一个接收XML请求并封装到实体类中进行封装调用,项目使用的是SpringBoot,对于封装XML来说,框架无所谓
项目环境:SpringBoot框架 、Java语言、 Maven版本控制器、 IDEA编译器
大致步骤
1、导包
2、根据XML映射实体类
3、编写接口
4、测试
5、遇到的坑
1、导包
解析XML格式的包,版本号自己定义即可
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
2、根据XML映射实体类
现在给出一个模板,我的XML模板
<?xml version="1.0" encoding="UTF8"?>
<STUDENTXML>
<ID>123</ID>
<STUNAME>张三</STUNAME>
<SEX>男</SEX>
</STUDENTXML>
转换为实体如下:因为导入lombok.Data,所以省略get set,读者视情况而定
@Data
@JacksonXmlRootElement(localName ="STUDENTXML")
public class Student {
@JacksonXmlProperty(localName ="ID")
private Integer id;
@JacksonXmlProperty(localName ="STUNAME")
private String stuName;
@JacksonXmlProperty(localName ="SEX")
private String sex;
}
3、编写接口
@RequestMapping(value = "/info",
produces = {MediaType.APPLICATION_XML_VALUE, MediaType.TEXT_XML_VALUE},
consumes = {MediaType.APPLICATION_XML_VALUE,MediaType.TEXT_XML_VALUE})
public Student postTest(@RequestBody Student student){
System.out.println("传过来的xml信息转换成实体类如下:"+student.toString());
// TODO: 2021/6/2 编写相应的逻辑
//返回对象转为XML格式
return student;
}
4、测试
在线测试API工具:https://www.apizza.net/ 【需要下载插件】
在线格式化XML网站:https://www.bejson.com/otherformat/xmlsort/
测试数据与返回的数据
5、遇到的坑
- 请求方式限定
- consumes中我使用的直接是多种方式,因为你访问中会有 application/xml 和 text/xml 类型不对也会导致报错。
- 类型转换失败
- 由于XML转换为实体是不确定类型,很有可能误解其中参数类型,导致失败