SoaupUI - Groovy取代All

时间:2015-11-04 01:25:34

标签: regex groovy replace soapui

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

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

它没有在字符串中找到文本。任何人都可以看到我出错的地方

由于

1 个答案:

答案 0 :(得分:0)

您的表达式只是从特定标记中删除特定命名空间(除了您要添加>以进行分组。

您可以尝试使用replaceAll使用跟随正则表达式来更通用,以从任何已关闭的标记中删除命名空间。

   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>

正则表达式解释/\<\/(\w*)\s[\S-\>]*\>/

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

希望它有所帮助,