Postman REST API:比较两个 XML 响应

Postman REST API: Compare two XML response

我正在尝试比较 2 个 REST API 的 XML 响应。我想比较从 Response1 到 Response2 的几个字段。

响应 1:

<d:site_name>Bondi Junction</d:site_name>
<d:country>AU</d:country>
<d:regio>NSW</d:regio>
<d:contact>123456789</d:contact>

响应 2:

<d:country>AU</d:country>
<d:region>NSW</d:region>

我创建了一个包含 API 的集合,我想 运行 和 API 并比较可用的列(我不想比较完全)。

能否请您指导我完成的方法。

谢谢, 塞卡

enter image description here

据我所知,在不将 xml 转换为 json 的情况下,没有简单的方法来比较 xml 属性和元素的值。

下面是 2 个用例(测试)的工作示例(xml 转换为 json)

  1. 使用函数difference(),可以测试2个xml是否有差异
  2. 使用json路径提取xml元素的值你也可以比较特定的字段值

    function difference(object, base) {
        function changes(object, base) {
            return _.transform(object, function(result, value, key) {
                if (!_.isEqual(value, base[key])) {
                    result[key] = (_.isObject(value) && _.isObject(base[key])) ? changes(value, base[key]) : value;
                }
            });
        }
        return changes(object, base);
    }
    
    
    var xml1 = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>
               <envelope>
                <body>
                    <d:site_name>Bondi Junction</d:site_name>
                    <d:country>AU</d:country>
                    <d:regio>NSW</d:regio>
                    <d:contact>123456789</d:contact>
                </body>
               </envelope>
    `;
    var xml2 = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>
                <envelope>
                 <body>
                    <d:country>AU</d:country>
                    <d:region>NSW</d:region>
                 </body>
               </envelope>
    `;
    
    var jsonObject1 = xml2Json(xml1);
    var jsonObject2 = xml2Json(xml2);
    var diff = difference(jsonObject1, jsonObject2);
    
    console.log(diff);
    
    pm.test("Test for any differences in the 2 payloads", function() {
        //diff object will be empty in case of no differences
        pm.expect(_.isEmpty(diff)).to.eql(true);
    
    });
    
    
    pm.test("Test for the value of country in 2 payloads ", function() {
        pm.expect(jsonObject1.envelope.body.country).to.eql(jsonObject2.envelope.body.country);
    });