Краткое описание :
Оператор select to xml должен формировать корректный файл, чтобы его смогли прочитать внешние приложения.Описание :
Vip - язык, компиляцияЧто измененно :
Компилятор SQL
Экспорт-импорт
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Оператор select to xml должен формировать корректный файл, чтобы его смогли прочитать внешние приложения.
1) Исправить обрезку полей при замене " на "
2) В соответствии со стандартом http://www.w3.org/TR/2006/REC-xml-20060816/#charsets разрешенными символами для XML файлов являются
гx9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
а
Из чего следеует, что символы #x1-#x8, гxB, гxC, гxE - #x1F, стандартными парсерами XML (например от Microsoft, от Oracle Java) воспринимаются как ошибочные. Их не должно быть в XML выгрузке.
3) Разрешенные символы #x9 | #xA | #xD (табуляции и переводы строки) при выгрузке в XML нужно менять на строки
4) В текущей версии получаемый в результате XML файл. Выгружается как одна сплошная строка. При больших объёмах выгрузки 7 МБ и более. В текстовых редакторах такие файлы невозможно открыть.
Для удобства правки таких файлов в текстовых реакторах необходимо записывать форматированные XML (с переносами строк и с отступами). В данном случае целесообразно и записывать на новой строке. T
Как измененно :
1) исправлена обрезка полей;
2) запрещенные символы -#x1-#x8, гxB, гxC, гxE - #x1F № при выгрузке пропускаются;
3) табуляция и переводы каретки выгружаются как коды T
T
4) T и T выгружаются с отступами построчно;
5) поля всегда выгружаются с заголовками (атрибут NAME; также включена и заблокирована соответствующая опция в настройках импорта-экспорта БД в Саппорте);
6) реализована выгрузка и загрузка мемо-полей: соответствующий тег в xml-файле дополняется атрибутом PREFIX, содержимое поля кодируется в base64 и сохраняется в виде неразрывной строки в тексте тега;
7) для импорта используется SAX-парсер от Microsoft, поэтому объём входного xml-файла роли не играет.
8) формат вывода полей типа time по умолчанию - "'HH:MM:SS:SSS'", datetime - "DD/MM/YYYY HH:NN:SS:SSS";