XML, почему нулевой символ запрещен даже в разделах CDATA?
Кажется, файл тут же завершается.
Любое решение? База64?
XML, почему нулевой символ запрещен даже в разделах CDATA?
Кажется, файл тут же завершается.
Любое решение? База64?
Вы можете найти ответ в этом предыдущем вопросе:
Почему управляющие символы недопустимы в XML 1.0?
Потому что это не допустимый символ XML, т.е. он должен выдавать ошибку синтаксического анализа. Вероятно, это связано с историческими причинами (строки с завершающим нулем) и из-за того, что XML представляет собой простой текст: все, что может захлебнуться редактором с поддержкой Unicode, не рекомендуется...
Он не должен «завершать файл», но должен генерировать ошибку правильности. Это запрещено, потому что большая часть мира все еще использует обработку строк с завершающим нулем, поэтому разрешение \0 может вызвать проблемы в какой-то неуказанной точке цепочки обработки.
Возможно, это даже может быть уязвимостью системы безопасности; в прошлом было много эксплойтов, которые полагались на взаимодействие систем, которые разрешают \0, и тех, которые принимают его как терминатор. Поэтому безопаснее всего просто запретить это.
Другие управляющие символы можно экранировать как ...; ссылки на символы в других местах XML 1.1, но не в разделах CDATA. В XML 1.0 вообще нет возможности вводить управляющие символы. В конце концов, это должен быть текстовый, удобочитаемый формат.
База64?
Да. Но если вы обрабатываете в основном большие фрагменты двоичных файлов, инкапсуляция их в XML, вероятно, не является разумным выбором.