Karate 空手道-无法将java.util.LinkedHashMap转换为java.util.List
我需要将XML文件与Json响应文件进行比较。下面只是原始xml文件的一个简短版本,JSON和xml有不同的属性名称,因此我无法直接比较它们。我需要调用函数来格式化xml,以便将其与json进行比较。在这个过程中,在运行下面的代码之后,我得到了错误Karate 空手道-无法将java.util.LinkedHashMap转换为java.util.List,karate,Karate,我需要将XML文件与Json响应文件进行比较。下面只是原始xml文件的一个简短版本,JSON和xml有不同的属性名称,因此我无法直接比较它们。我需要调用函数来格式化xml,以便将其与json进行比较。在这个过程中,在运行下面的代码之后,我得到了错误无法将java.util.LinkedHashMap转换为java.util.List * xml list = $Test1/Body * print list * def xpath = function(x, p){ try { return
无法将java.util.LinkedHashMap转换为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>
XPBSMWAT
这是一个更简单的XML数据版本;我的实际xml文件更大。
karate.map
包含两个参数列表和一个函数
从你的问题来看
* xml list = $Test1/Body
变量名list
实际上是您定义的xml
数据类型,不是list
karate将XML/JSON作为java.util.LinkedHashMap,因为您将XML作为输入传递给map函数,它试图将其转换到列表中,但失败了
所以应该是这样的,
* def list = <something>
*定义列表=
但请确保它返回的不是xml而是列表
xml路径$Test1/Body
返回xml
当您打印列表时,您将看到它被[和
]
我不太确定您想用这个xml和JS函数做什么,但这可能是导致错误的根本原因。我迷路了。如果你用你想做的事情来重新写你的问题-这将允许其他人帮助你Hank Peter,在问题中添加了详细信息。试着读几遍:-你不能在XML上做
karate.map()
,它必须是一个JSON数组。感谢Babu提供的信息性答案,但我也尝试过这种方法。但我还是犯了同样的错误。顺便说一句,我补充了更多的细节问题。