SoaupUI - Groovy replace All



我有一个字符串,其中包含一些带有名称空间的xml标记,我正试图从结束标记中删除这些名称空间。我试过使用下面的方法

staticData = staticData.replaceAll('/Group xmlns="http://socialservices.gov.au/ebo/QualityIndicators"','/Group>')

它在字符串中找不到文本。有人能看到我错在哪里吗

感谢

在您的表达式中,它只是从特定标记中删除特定的命名空间(此外,您还向组添加了和额外的>)。

您可以尝试将replaceAll与follow正则表达式一起使用,以从任何封闭标记中删除名称空间。

   def staticData = 
'''<root>
<Group>
</Group xmlns="http://a">
<Group>
</Group xmlns="http://b">
<Group>
</Group xmlns="http://socialservices.gov.au/ebo/QualityIndicators">
<Different>
</Different xmlns="http://socialservices.gov.au/ebo/QualityIndicators">
<Normal>
</Normal>
</root>'''
staticData = staticData.replaceAll(/</(w*)s[S->]*>/){ match, capture ->
    return "</$capture>"
}
println staticData

此脚本返回:

<root>
<Group>
</Group>
<Group>
</Group>
<Group>
</Group>
<Different>
</Different>
<Normal>
</Normal>
</root>

Regex解释/</(w*)s[S->]*>/:

它匹配以</</)开头的文本,然后是捕获该组的0或n个字符((w*)),然后是一个空格(s),再是除空格和>之外的任何字符0或n次([S->]*),最后是>字符(>)。

希望有帮助,

最新更新