Java escape XML строки токенов - PullRequest
0 голосов
/ 28 апреля 2020

Ответ для большинства кодировок символов: Apache StringEscapeUtils в версии commons.text. Согласен. Может использоваться для экранирования строк между тегами xml. Но как мне избежать самих xml токенов?

Допустимые символы просты: https://www.w3.org/TR/xml11/#sec -common-syn

Мой пример использования - преобразование таблицы базы данных в XML, где каждое имя столбца равно одному xml токену.

<ROW><COL1>Hello</COL1></ROW>

Работает нормально, но что, если имя столбца "/ BIC / COL1"?

<ROW></BIC/COL1>Hello<//BIC/COL1></ROW>

явно недействителен. В настоящее время у меня даже нет плана, как может выглядеть кодировка. Нужно будет использовать имя тега _x26BIC_x26COL1 или что-то подобное.

Что-нибудь, что я пропускаю?

1 Ответ

0 голосов
/ 29 апреля 2020

Для тега элемента XML отсутствует механизм экранирования строк. Некоторые API даже отклоняют имя для нового элемента, если оно не соответствует спецификации для имен элементов. Существует как минимум два возможных решения вашей проблемы:

  1. Вы можете определить свой собственный механизм выхода, который вы используете для кодирования и декодирования имени элемента. В качестве примера вы можете использовать _ в качестве escape-последовательности. Последовательность __ (два подчеркивания) будет литералом _, а последовательность _XX или _uXXXX будет символом ascii / unicode, который вы хотите написать.

  2. Вы сохраняете имя столбца в атрибуте. Таким образом, вы можете сохранить каждое значение в нем и даже использовать API XML по вашему выбору, чтобы сохранить значение с правильной кодировкой.

...