我不太擅长正则表达式。有人可以帮我更换
<MessageParam name="0" desc="Source Queue" />
和
<MessageParam name="0" desc="Source Queue"></MessageParam>
使用正则表达式
正则表达式匹配:
(<\s*MessageParam[^>]*)/\s*>
替换字符串:
$1></MessageParam>
您可能需要转义\
字符(在它之前添加一个额外的字符\
)。
我假设>
没有出现在属性值中,并且 XML 是有效的。
更通用的版本:
正则表达式匹配:
<\s*([^\s>]+)([^>]*)/\s*>
替换字符串:
<$1$2></$1>
对于这个,我不确定我所做的所有假设。但我仍然假设>
没有出现在属性值中,并且 XML 是有效的。
正则表达式
<(\w+)(.+?)/>
用。。。来代替
<$1$2></$1>
public static void format(String xmlNode) {
Pattern patt = Pattern.compile("(<MessageParam[^>]*)(\\s*/>)");
Matcher mattcher = patt.matcher(xmlNode);
while (mattcher.find()){
String result = mattcher.replaceAll("$1></MessageParam>");
System.out.println(result);
}
}
这对我有用:
xmlString.replaceAll("<(\\w*:*\\w+)/>", "<$1></$1>");