По коду это трудно понять наверняка, но если вы полагаетесь на стандартную реализацию Stax, которую предоставляет JDK 1.6 (Sun sjsxp), я бы порекомендовал обновить ее до Woodstox .
Известно, что он менее глючит, чем Sjsxp, поддерживает весь API Stax2 и активно разрабатывается и поддерживается (тогда как версия Sun была только что написана и количество исправлений ошибок было ограничено).
Но ошибка в вашем коде такова:
XMLStreamWriter xtw = xof.createXMLStreamWriter(new FileWriter(fileName));
вы полагаетесь на кодировку платформы по умолчанию (которая должна быть CP-1252, windows?). Вы всегда должны явно указывать кодировку, которую вы используете. Stream Writer просто проверяет, что вы не делаете чего-то опасного, и обнаруживает несогласованность, которая может привести к повреждению документа. Довольно умный, что фактически говорит о том, что это не стандартный процессор Stax. : -)
(другой ответ также указывает на правильный обходной путь, просто передавая OutputStream и кодировку, чтобы XMLStreamWriter делал правильные вещи)