私は正規表現があまり得意ではありません。誰かが私を置き換えるのを手伝ってくれますか
<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>");