空手道 Xml 解析

问题描述 投票:0回答:1
 <Batch>
    <results>
        <columns>
            <column index="0">Sample Batch ID</column>
            <column index="1">Status</column>
            <column index="2">GSA-48v4-0</column>
        </columns>
        <rows>
            <row index="0">
                <column index="0">102</column>
                <column index="1">Completed</column>
                <column index="2">GSA-48v4-0</column>
            </row>
            <row index="1">
                <column index="0">102</column>
                <column index="1">Active</column>
                <column index="2">GSA-48v4-0</column>
            </row>
        </rows>
    </results>
</Batch>

我有一个像这样的xml格式。如果第二列值为“Active”,我需要获取节点索引为 0 的列值。所以这里我需要获取 102。它应该返回列值为“Active”的所有节点的列表。

如有任何帮助,我们将不胜感激。

karate
1个回答
0
投票

这实际上比看起来更难,所以我建议转换为 JSON 以使其更容易。

* json data = response
* def rows = data.Batch.results.rows.row.map(x => x._.column)
* def result = rows.find(x => x[1]._ == 'Active')
* assert result[0]._ == '102'

可能需要一些时间来适应 Karate 如何将 XML 转换为 JSON。上面的第二行重点关注您需要的数据。

find()
函数应用您提到的规则。

有关允许您执行此操作的 JS 函数的更多详细信息,请参阅:https://stackoverflow.com/a/76091034/143475

© www.soinside.com 2019 - 2024. All rights reserved.