【问题标题】:SoaupUI - Groovy replace AllSoapUI - Groovy 替换所有
【发布时间】:2015-11-04 01:25:33
【问题描述】:
我有一个字符串,其中包含一些带有命名空间的 xml 标记,我正在尝试从结束标记中删除命名空间。我试过用下面的方法
staticData = staticData.replaceAll('/Group xmlns="http://socialservices.gov.au/ebo/QualityIndicators"','/Group>')
它没有在字符串中找到文本。谁能看到我哪里出错了
谢谢
【问题讨论】:
标签:
regex
groovy
replace
soapui
【解决方案1】:
您的表达式只是从特定标记中删除特定命名空间(除了您要添加和额外的> 到组)。
您可以尝试更通用地使用 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 (\>)。
希望对你有帮助,