Всем доброго времени суток.
Имеется следующая ситуация: в xml документ помещаются некоторые данные, вычитанные из реестра и содержащие непечатаемые символы. При чтении этих данных естественно возникает проблема. Какие есть пути решения проблемы?
Варианты:
1) Записывать данные в Xml в шестнадцатиричном виде
— возрастает объём
— необходимо писать специальный парсер
2) Кодировать только символ
— необходимость в определении закодированного символа
3) Не записывать такие символы
— потеря данных
Возможно есть встроенный механизм определения таких символов? или механизм представления данных не в текстовом виде?
_strannik_ wrote:
> Возможно есть встроенный механизм определения таких символов? или > механизм представления данных не в текстовом виде?
xml — текстовый формат. Там может быть только текст. Бинарные данные обычно base64 кодируют.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Кодировать непечатаемые символы числовыми сущьностями.
Помещать их в секцию CDATA
__>Всем доброго времени суток. __>Имеется следующая ситуация: в xml документ помещаются некоторые данные, вычитанные из реестра и содержащие непечатаемые символы. При чтении этих данных естественно возникает проблема. Какие есть пути решения проблемы?
__>Варианты: __>1) Записывать данные в Xml в шестнадцатиричном виде __> — возрастает объём __> — необходимо писать специальный парсер __>2) Кодировать только символ __> — необходимость в определении закодированного символа __>3) Не записывать такие символы __> — потеря данных
__>Возможно есть встроенный механизм определения таких символов? или механизм представления данных не в текстовом виде?
__>P.S. используется xerces 2.7
__>Всем заранее спасибо
WinterMute wrote:
> Кодировать непечатаемые символы числовыми сущьностями. > Помещать их в секцию CDATA
В CDATA имеет смысл помещать только текст, содержащий символы <, >, & (например, удобно для javascript-вставки).
Если символы являются текстом, то они могут идти в xml как есть. Если это просто байты, то только кодировать в текстовую
кодировку QP, BaseN и т.п. В xml обычно используют Base64.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, kan, Вы писали:
kan>WinterMute wrote:
>> Кодировать непечатаемые символы числовыми сущьностями. >> Помещать их в секцию CDATA kan>В CDATA имеет смысл помещать только текст, содержащий символы <, >, & (например, удобно для javascript-вставки). kan>Если символы являются текстом, то они могут идти в xml как есть. Если это просто байты, то только кодировать в текстовую kan>кодировку QP, BaseN и т.п. В xml обычно используют Base64.
Вообще говоря ты прав, CDATA может содердать только "Char"-содержимое, но, по идее, невалидирующие парсеры могут съесть любое содержимое между <[CDATA[ и ]]> и выдать всё как есть.
WinterMute wrote:
> kan>В CDATA имеет смысл помещать только текст, содержащий символы <, >, > & (например, удобно для javascript-вставки). > kan>Если символы являются текстом, то они могут идти в xml как есть. > Если это просто байты, то только кодировать в текстовую > kan>кодировку QP, BaseN и т.п. В xml обычно используют Base64. > > Вообще говоря ты прав, CDATA может содердать только "Char"-содержимое, > но, по идее, невалидирующие парсеры могут съесть любое содержимое между > <[CDATA[ и ]]> и выдать всё как есть.
Тут ведь как... могут выдать, а могут и не выдать!
Стандарту это не соответствует, а потому лучше не использовать. Иначе непонятно — какой смысл от xml.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: XML: проблема с непечатаемыми символами
От:
Аноним
Дата:
30.11.06 17:15
Оценка:
Здравствуйте, _strannik_, Вы писали:
__>Всем доброго времени суток. __>Имеется следующая ситуация: в xml документ помещаются некоторые данные, вычитанные из реестра и содержащие непечатаемые символы. При чтении этих данных естественно возникает проблема. Какие есть пути решения проблемы?
__>Варианты: __>1) Записывать данные в Xml в шестнадцатиричном виде __> — возрастает объём __> — необходимо писать специальный парсер __>2) Кодировать только символ __> — необходимость в определении закодированного символа __>3) Не записывать такие символы __> — потеря данных
__>Возможно есть встроенный механизм определения таких символов? или механизм представления данных не в текстовом виде?
__>P.S. используется xerces 2.7
__>Всем заранее спасибо
Как вариант переходить на .net и использовать XML парсер оттдута.
Корректно преобразовывает символы в конструкции вида &x01A и т.п. и считывает обратно.