我需要将XML文件与Json响应的文件进行比较。以下是原始xml文件的简短版本,JSON和XML具有不同的属性名称,因为我无法直接比较它们。我需要调用函数来格式化xml,以便可以与json进行比较。在此过程中,运行以下代码后,出现错误Cannot cast java.util.LinkedHashMap to java.util.List
。
* xml list = $Test1/Body
* print list
* def xpath = function(x, p){ try { return karate.xmlPath(x, p) } catch (e) { return '#notpresent' } }
* def fun = function(x){ return { code: xpath(x, '/Body/code') } }
* def temp = karate.map(list, fun)
* print temp
Test1是一个xml文件,其中包含以下示例数据;
<ns9:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns5:plan">
<ns4:code>XPBSMWAT</ns4:code>
</ns9:Body>
这是XML数据的简单版本;我的实际xml文件更大。
答案 0 :(得分:2)
karate.map
包含2个参数列表和一个函数,
根据您的问题,
* xml list = $Test1/Body
变量名list
实际上是您定义的xml
数据类型,不是列表。
空手道将XML / JSON用作java.util.LinkedHashMap,因为您将XML作为输入传递给映射函数,该函数试图将其强制转换为List并失败。
所以应该是这样,
* def list = <something>
但是请确保它返回列表而不是xml
您的xml路径
$Test1/Body
返回xml打印列表时,您会看到它被 [和 ]
我不太确定您要使用此xml和JS函数做什么,但这可能是导致您收到错误的根本原因。