RSSをパースするときの制御文字への対処

DOMを使ってRSSをパースしているとたまに以下のエラーがおきることがあります。(Livedoorブログ、FC2、Amebaブログとかが多い)

An invalid XML character (Unicode: 0x14) was found in the element content of the document.

Unicode: 0x14の部分は0xbだったりいろいろです。
原因は、絵文字を使っていたり、文字化けしたりといったことによって制御文字が挿入されたためのようです。
ASCIIコードでは0x00〜0x1Fと0x7Fのコード範囲が制御文字になり、これが含まれているXMLはinvalidになるようです。
Javaの場合、RSSをパースする前に以下のようにこの制御文字を削除しました。

str.replaceAll("[\\00-\\x1f\\x7f]", "");


上記のコードだと、tabも消してしまうので修正。

str.replaceAll("[\\00-\\x08\\x0a-\\x1f\\x7f]", "");

RSSを提供している側で対処してほしい問題ですね。