Вниз
Скачать: CL | DM;

Выгрузка данных в XML. Создание файла TFileStream ом.   Найти похожие ветки 

← →
pyJIoH ©   (2006-10-19 11:37) [0]

Проблема вообщем-то странная,
выгружаю данные из БД в xml файл,
записывая их FileStream.WriteBuffer,
однако попытке открыть некоторые XML файлы,
возникает трабла:
Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей XSL. Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.
--------------------------------------------------------------------------------
В текстовом комментарии обнаружен недопустимый знак.


Лечится она просто - открываем блокнотом и заного сохраняем и все ok.
Данные на первый взгляд одинаковые,
с другой стороны новый файл весит на 100kb меньше (для 8mb xml файла),
а ExamDiff Pro виснет при их сравнивании.

В какую сторону мне копать?


← →
umbra ©   (2006-10-19 12:10) [1]

может, XSL нужного нет?


← →
pyJIoH ©   (2006-10-19 12:17) [2]

Нет, я просто пересохраняю файл блокнотом
и файл становится "правильным" и легче..


← →
StriderMan ©   (2006-10-19 12:30) [3]

посмотри в НЕХ"е на предмет различий.


← →
umbra ©   (2006-10-19 12:32) [4]

похоже на то, что в файле был блок бинарных данных, которые после сохранения в блокноте успешно исчезают. Вы пробовали проверить полученный XML на валидность до его открытия?


← →
Reindeer Moss Eater ©   (2006-10-19 13:44) [5]

записывая их FileStream.WriteBuffer,

Почему FileStream.WriteBuffer?
Само тело xml документа руками что ли формируется?


← →
Amoeba ©   (2006-10-19 13:51) [6]

Какая база данных? Какие компоненты доступа используются? Если ADO, то руками ничего делать не надо.


← →
pyJIoH ©   (2006-10-19 14:06) [7]


> Само тело xml документа руками что ли формируется?

Да, все создается руками

Вообщем нашел я несколько причин,
одна из них - при выгрузке из БД с немецкой кодировкой,
мой аналог блокнота (BRED) при пересохранении просто прибивал незнакомые ему символы (отсюда кстати потеря "веса" файла).

Раньше я юзал IXMLDOM для создания файлов,
но у него есть минусы:
он медленный,
при выгрузке больших объемов данных - раздувается,
и заменяет все амляуты на свои какие-то символы


> Какая база данных? Какие компоненты доступа
> используются? Если ADO, то руками ничего делать не
> надо.

База любая, я пишу компонент экпорта


← →
Reindeer Moss Eater ©   (2006-10-19 14:17) [8]

Да, все создается руками

Ну и чего же мы тогда хотим?
Указывай правильную кодировку в прологе.


← →
pyJIoH ©   (2006-10-19 14:46) [9]

В ProcessingInstruction я указываю encoding="UTF-8"
или мне нужно напрямую указывать коды символов?
типа a-umlaut - ä?

Создал файл в Excel 2007 с умляутами,
распаковал, внутри в xml файле так и они записаны, как есть
т.е. просто буквы немецкой кодировкой, файл открывается эксплорером нормально..

ничего не понимаю.. (с)


← →
pyJIoH ©   (2006-10-19 14:47) [10]

в строке типа a-umlaut - ?
был указан код &#0228


← →
pyJIoH ©   (2006-10-19 14:48) [11]

блин =)
& # 0228 ;
без пробелов


← →
Reindeer Moss Eater ©   (2006-10-19 14:52) [12]

FileStream.WriteBuffer,

На что у тебя указывает первый параметр WriteBuffer?
Иными словами в чем у тебя тело xml документа перед сохранением?


← →
pyJIoH ©   (2006-10-19 15:35) [13]

Только сейчас обратил внимание,
я везде использую WideString, а базовый класс написанный не мной,
который собственно и осуществляет запись WriteBuffer делает это с перемнной типа string..


← →
pyJIoH ©   (2006-10-19 19:29) [14]

Вообщем проблема решена, использую везде WideString,
перед записью в файл перевожу в UTF-8 UnicodeToUtf8.
Или можно сохранять файл как UTF-16.


← →
pyJIoH ©   (2006-10-19 19:30) [15]

p.s. всем спасибо за помощь
=)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.03 c
6-1152614617
WhiteBarin
2006-07-11 14:43
2006.12.03
Как передать файл через стандартное соединение Windows?


2-1163580289
Делфи
2006-11-15 11:44
2006.12.03
плейлист


15-1163580118
KilkennyCat
2006-11-15 11:41
2006.12.03
Что Вы наиболее часто используете и для каких целей?


1-1161202286
Dmitry_177
2006-10-19 00:11
2006.12.03
Определить путь приложения в обработке хука WH_KEYBOARD_LL


4-1153410020
Alek_1
2006-07-20 19:40
2006.12.03
Как программно включить ActiveDesktop?




   Наверх