税务局接口-xml格式和对象互转工具类使用说明
注意: 由于税务局接口请求xml数据和返回xml数据和常规的不一样,所以手动写了一个工具类,本工具类只针对税务局xml请求参数和返回参数与对象互相。
说明
工具类主要是两个方法 objectToXml 对象转xml格式数据 xmlToObject xml格式数据转对象
在设置字段别名上定义了两个注解 @XmlAlias(“name”) xml请求字段别名 @JSONField(name = “name”) xml返回字段别名
所有需要转化的对象 需要继承BaseXmlDto类
所有请求接口的xml对象都要使用BusinessXmlDto 对象
BusinessXmlDto businessXmlDto = new BusinessXmlDto<>();
所有解析返回xml的对象 BusinessXmlDto对象 和 ReturnBodyDto对象
BusinessXmlDto businessXmlDto1 = new BusinessXmlDto<>();
ReturnBodyDto bodyDto = new ReturnBodyDto<>();
主要方法
- objectToXml(Object object, String root); 对象转xml格式数据
- xmlToObject(String xmlData, TypeReference type); xml格式数据转对象
例子
package com.aixiao.inv.seed.model.dto;
import lombok.Data;
/**
* @author cyx
* Date: Create in 2020/5/2 16:34
* Utils: Intellij Idea
* Description: 接口请求返回头xml信息
*/
@Data
public class BusinessXmlDto<T> {
/**
* 接口id
*/
private String id;
/**
* 接口名称
*/
private String comment;
/**
* 请求头
*/
private T body;
}
ReturnBodyDto类 (税务局接口返回主体对象)
package com.aixiao.inv.seed.model.dto;
import lombok.Data;
/**
* @author 陈胤训
* @date 2020/6/7 17:04
* Utils: Intellij Idea
* Description: 税务局接口返回主体类
*/
@Data
public class ReturnBodyDto<E> {
/**
* 返回代码
*/
private String returnCode;
/**
* 返回信息
*/
private String returnMsg;
/**
* 返回数据
*/
private E returnData;
}
DemoDto
package com.aixiao.inv.seed.model.dto;
import com.aixiao.inv.seed.config.annotation.XmlAlias;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.util.List;
/**
* @author cyx
* Date: Create in 2020/5/27 16:57
* Utils: Intellij Idea
* Description:
*/
@Data
@XmlAlias("DemoDto3")
public class DemoDto extends BaseXmlDto {
@XmlAlias("hsslbs3") //xml请求字段别名
@JSONField(name = "hsslbs3") //xml返回字段别名
private String hsslbs;
@XmlAlias("demo2Dtos3")
@JSONField(name = "demo2Dtos3")
private List<Demo2Dto> demo2Dtos;
}
BaseXmlDto
package com.aixiao.inv.seed.model.dto;
/**
* @author 陈胤训
* @date 2020/6/6 15:51
* Utils: Intellij Idea
* Description: xml基础类
*/
public class BaseXmlDto {
}