Решил вот наконец написать что-то умное в блог :-) Я же все-таки программист и возможно найденные мной решения некоторых проблем помогут кому-нибудь сэкономить время. Сегодня расскажу о том, как удалить невалидные символы из XML.
Сперва коротко о самой сути проблемы. Я думаю, что рассказывать что такое XML и как его используют не нужно :-) XML сейчас везде. Но вот далеко не все догадываются, что в XML допустимы далеко не все символы Unicode. Подробнее об этом можно почитать здесь или здесь.
В принципе какие-то проблемы с невалидными символами в XML встречаются достаточно редко так как во-первых практически все невалидные символы крайне редки, а во-вторых никакой нормальный парсер не позволит создать документ с невалидными символами. А вот если XML-документ приходит от какой-нибудь legacy-системы, где он был сформирован как обычный текстовый файл... В общем как раз именно так у меня и было :-) Само собой никто исправлять ошибку в legacy-системе не хотел и поэтому пришлось искать обходное решение. Решил я эту проблему на Java так:
Сперва коротко о самой сути проблемы. Я думаю, что рассказывать что такое XML и как его используют не нужно :-) XML сейчас везде. Но вот далеко не все догадываются, что в XML допустимы далеко не все символы Unicode. Подробнее об этом можно почитать здесь или здесь.
В принципе какие-то проблемы с невалидными символами в XML встречаются достаточно редко так как во-первых практически все невалидные символы крайне редки, а во-вторых никакой нормальный парсер не позволит создать документ с невалидными символами. А вот если XML-документ приходит от какой-нибудь legacy-системы, где он был сформирован как обычный текстовый файл... В общем как раз именно так у меня и было :-) Само собой никто исправлять ошибку в legacy-системе не хотел и поэтому пришлось искать обходное решение. Решил я эту проблему на Java так: