Парсинг unicode символ (0x2) использующий XML1.1

В моем JAVA-приложении я должен проанализировать XML-документ, который содержит управляющий символ 0x2 в CDATA.

Я попробовал немного путей, но coudnt проходят. Я хочу избежать любого вида кодирования.

Есть ли в XML1.1 какой-либо путь?

7
задан рüффп 2 May 2017 в 07:29
поделиться

2 ответа

XML не может содержать управляющие символы ASCII (кроме TAB, CR и LF), даже внутри раздела CDATA. Они запрещены спецификацией XML.

Кодировать двоичные данные в строки Base64 и записывать их в XML. В этом случае нет необходимости в CDATA.

2
ответ дан 6 December 2019 в 19:35
поделиться

Мне нужно проанализировать xml, который содержит управляющий символ 0x2 внутри CDATA

Значит, это не XML. Необработанный управляющий символ U + 0002 в любом месте означает, что он неправильно сформирован и, следовательно, не является документом XML.

Только в XML 1.1 можно включать управляющие символы, закодированные как ссылка на символ. Таким образом, вы могли попытаться исправить это, заменив строку для \ x02 на & # 2; перед синтаксическим анализом. Однако вы не можете помещать ссылки на символы в разделах CDATA, так что это тоже не сработает.

edit: вы, вероятно, могли бы исправить это в краткосрочной перспективе, если вы абсолютно уверены, что каждый случайный символ U + 0002 находится внутри раздела CDATA, заменив каждый на:

]]>&#2;<![CDATA[

Однако это супер-шонко. Что бы ни сгенерировало ошибочный XML, необходимо в первую очередь исправить. Идите и пните человека, ответственного за его создание!

11
ответ дан 6 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: