ILLEGAL_CHARS = new HashSet(Arrays.asList('\u0000', '\u0001', '\u0002', '\u0003', ...); ? Кроме того, сам этот метод перечисления невалидных символов - та еще беда. Правильнее проверять попадание в диапазон валидных символов. См. нижную часть статьи http://en.wikipedia.org/wiki/Valid_characters_in_XML

По набору новых классов в целом - брр, но если без нескольких таких классов обойтись нельзя, то лучше бы их в отдельный подпакет спрятать.