В моем JAVA-приложении я должен проанализировать XML-документ, который содержит управляющий символ 0x2
в CDATA.
Я попробовал немного путей, но coudnt проходят. Я хочу избежать любого вида кодирования.
Есть ли в XML1.1 какой-либо путь?
XML не может содержать управляющие символы ASCII (кроме TAB, CR и LF), даже внутри раздела CDATA. Они запрещены спецификацией XML.
Кодировать двоичные данные в строки Base64 и записывать их в XML. В этом случае нет необходимости в CDATA.
Мне нужно проанализировать xml, который содержит управляющий символ 0x2 внутри CDATA
Значит, это не XML. Необработанный управляющий символ U + 0002 в любом месте означает, что он неправильно сформирован и, следовательно, не является документом XML.
Только в XML 1.1 можно включать управляющие символы, закодированные как ссылка на символ. Таким образом, вы могли попытаться исправить это, заменив строку для \ x02
на & # 2;
перед синтаксическим анализом. Однако вы не можете помещать ссылки на символы в разделах CDATA, так что это тоже не сработает.
edit: вы, вероятно, могли бы исправить это в краткосрочной перспективе, если вы абсолютно уверены, что каждый случайный символ U + 0002 находится внутри раздела CDATA, заменив каждый на:
]]><![CDATA[
Однако это супер-шонко. Что бы ни сгенерировало ошибочный XML, необходимо в первую очередь исправить. Идите и пните человека, ответственного за его создание!