我有一个字符串,其中包含一些带有名称空间的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->]*
),最后是>
字符(>
)。
希望有帮助,