前スレの969です。
Javaって標準で正規表現が使えたんですね。知りませんでした。
989さん情報ありがとうございました。
要素名の小文字化はうまく出来たので、今度は属性名の小文字化に挑戦しました。

Matcher m = Pattern.compile("<(.*)( [A-Za-z]+=)").matcher(s1);
StringBuffer s2 = new StringBuffer();
while (m.find()) {
m.appendReplacement(s2, "<$1"+ m.group(2).toLowerCase());
}
m.appendTail(s2);

という感じで書いて見ましたが、
<BODY BGCOLOR="WHITE" LINK="#00000"> を変換すると
<body BGCOLOR="WHITE" link="#00000"> となり、
最初の属性が小文字になりません。

これって正規表現の書き方が違うのでしょうか?