You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Karate XML断言如何迭代匹配coordinates属性的坐标对正则规则

解决方法

方案1:迭代校验每个坐标对(推荐,定位问题更清晰)

Karate完全支持拆分坐标内容后逐组校验,步骤如下:

  • 先提取所有coordinates节点的文本,去除前后空白后按单空格拆分得到坐标对数组
  • 用修正后的正则对每个坐标对单独校验
    示例代码:
# 提取所有coordinates节点内容
* def coordNodes = get $xmlData1/LinearRing/coordinates
# 修正后的单坐标对正则,支持正负整数、小数
* def singleCoordRegex = /^(-?\d+\.?\d*),(-?\d+\.?\d*)$/

* each coordText in coordNodes
"""
# 去除前后空白后按单个空格拆分坐标对
* def coordPairs = coordText.trim().split(' ')
# 逐组校验坐标对格式
* match each coordPairs == '#regex singleCoordRegex'
"""

方案2:调整正则直接整串匹配(符合单空格间隔要求)

如果需要直接对整个coordinates文本做一次性校验,要求坐标对之间仅允许1个空格的话,可使用以下正则,覆盖前导/后导空白、多组坐标对+单空格间隔的逻辑:

* def fullCoordRegex = /^\s*(-?\d+\.?\d*,-?\d+\.?\d*)( (-?\d+\.?\d*,-?\d+\.?\d*))*\s*$/
* match each $xmlData1/LinearRing/coordinates == '#regex fullCoordRegex'

之前匹配失败的原因说明

  1. 原正则第一个数字分组(-?\d?)仅支持最多1位数字,无法匹配46.8、-46.2000这类多位整数的坐标值,修正为(-?\d+\.?\d*)即可匹配多位正负数值
  2. 仅添加\s?只能处理单个可选空白,没有覆盖多组坐标对重复出现的逻辑,整串匹配需要兼容多组坐标+间隔的组合规则

内容的提问来源于stack exchange,提问作者Dhamo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 02:06:04