Какой хороший способ кодирования произвольного текста в XML читабельно читабельно?
-
09-12-2019 - |
Вопрос
То, что я имею до сих пор, помещает текст в теги CDATA, и имея дело с возможностью окончания CDATA, появляющихся в тексте, расщепляя его на несколько соседних CDATAS.
Я не уверен в этом, но анализаторы XML не могут сохранить новые линии внутри тегов CDATA, правильные?Это означало бы сбежать их как-то ...
Я хочу создать эти файлы XML, используя Perl, и разбирать их с C ++ (с помощью Expat), Java и C #.
Самое главное, я хочу, чтобы полученные файлы несколько чудовищники / модифицируемые.Кто-нибудь знает о какой-либо схеме кодирования, которая соответствует этим потребностям?Я использую это, чтобы хранить данные для базы данных, поэтому она должна принять произвольный текст, а после разбора возврата точного же текста.
Решение
XML уже поддерживает это, вам не нужно ничего особенного, и вам, безусловно, не нужно использовать CDATA.Просто используйте достойную библиотеку, убедитесь, что вы используете кодировку UTF-8, и добавьте текстовый узел.Если что-то «проигрывает» ножи, то это ошибка.XML уже имеет «кодировку» (сбежав), который является относительно читаемым человеком.Это также стандарт, который делает его намного полезнее, чем изобретать свой собственный.
Смотреть, например, https://stackoverflow.com/a/1140802/181772
Другие советы
Вы можете кодировать контент, если контент был HTML, например:
<html><b>Bold Text</b></html>
.
vs.
<html><![CDATA[<b>Bold Text</b>]]></html>
. hmm, насколько я могу сказать разделы CDATA предназначены для данных о символах, и управляющие символы не учитываются.Я предполагаю, что это означает, что по вопросу новых линий шарверов XML совершает суждение призывов о том, являются ли они контрольным персонажем или нет (исторически, да, но ректически ... нет.).
Пока оно ухудшит читаемость, вы можете кодировать ньюлов, используя escape-последовательности, Предполагая, что вы избежаете правильно, анализ должен правильно преобразовать его, вам просто нужно будет отметить его при кодировании.
Другой вариант, который полностью нарушает ваше «читаемое человеком» требование к базой-64 кодировать текст, это позволяет кодировать произвольную информацию в XML.