java json转xml_「Java」 - xml & Json 排序输出

项目封装了新的SDK,需要对SDK进行测试,API没有变更。

设计一自动化CASE:

  1. 通过openapi的方式调用YAPI上接口测试用例,返回结果A;
  2. 引入SDK,编写单元测试代码,通过SDK调用接口,返回结果B;
  3. 对结果(xml/Json)进行排序后断言。

因为整个环境只有SDK是新的,所以完成以上CASE,基本可以找出SDK中存在的Bug。

但是返回结果中xml和Json的属性顺序不一定相对,所以用基本的equals可能会存在判断不准确的情况,需要提前对结果进行自然排序,排序后进行比较即可。

一、Json排序

fastjson,使用SerializerFeature.MapSortField参数,可以达到目的。

@Slf4j

a0bd3cdb6d8d1201bdc8fd0d692de202.png

二、xml排序

xml比较复杂,这里只讨论POJO<->xml的形式。

对于比较POJO形式的xml根据node名称进行自然排序即可,使用XSLT进行sort即可。

@Slf4j

对应的xsl文件。

<

手工调整xml中结点位置,对于生成的结果文件进行比较,完全一致。

1b0ec736d227cdfc41abee377bf66531.png

三、XML排序 - 续

好悲剧啊,接口返回的xml信息太复杂了,以至于XSLT模板比较难配置,该方案最终折戟。这里还是把即将删除的代码记录一下。

@Scan

XSLT增加结点过滤。

<

四、XMLUnit

终极方案,XMLUnit,不多解释了。

https://www.xmlunit.org/

https://github.com/xmlunit/xmlunit

http://xmlunit.sourceforge.net/userguide/XMLUnit-Java.pdf

探究 XMLUnit

XMLUnit: 验证比较XML文件的工具

五、FastJson最终处理

实在是写不动了,还是贴代码了。

对于Json中也需要对部分字段进行忽略,可以使用filter进行过滤。

public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值