Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


pyJIoH ©   (2006-10-19 11:37:00) 

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


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

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


pyJIoH   (2006-10-19 19:30:00) [1]

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


pyJIoH   (2006-10-19 19:29:00) [2]

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


pyJIoH   (2006-10-19 15:35:00) [3]

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


Reindeer Moss Eater   (2006-10-19 14:52:00) [4]

FileStream.WriteBuffer,

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


pyJIoH   (2006-10-19 14:48:00) [5]

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


pyJIoH   (2006-10-19 14:47:00) [6]

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


pyJIoH   (2006-10-19 14:46:00) [7]

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

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

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


Reindeer Moss Eater   (2006-10-19 14:17:00) [8]

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

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


pyJIoH   (2006-10-19 14:06:00) [9]


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

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

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

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


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

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


Amoeba   (2006-10-19 13:51:00) [10]

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


Reindeer Moss Eater   (2006-10-19 13:44:00) [11]

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

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


umbra   (2006-10-19 12:32:00) [12]

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


StriderMan   (2006-10-19 12:30:00) [13]

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


pyJIoH   (2006-10-19 12:17:00) [14]

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


umbra   (2006-10-19 12:10:00) [15]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо