![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
загрузка XML в DataSet
незнайка2003 © (2003-11-05 08:06:00)
Подскажите, какой существует оптимальный подход в данном вопросе
Незнайка2003 (2003-11-05 13:48:00) [21]
> bushmen © (05.11.03 13:32) [8]
Понял, извинения приняты :)
В принципе получается, что задача стандартная, возникает у многих. И вариантов решения пока только 2:
1. Парсить самостоятельно. Это не удобно, для каждого из наборов данных придется писать самостоятельную процедуру разбора. Да и долго это, а если нужно то только 1 раз закачать.
2. Использование TClientDataSet. Это мощный инструмент, большинство возможностей которого не используется. Вот и встает вопрос: неужели придется таскать все dll (знаю что их несколько) на пользовательские машины для того чтобы загружать XML?
Получается, что стандартная задача не имеет стандартного решения.
bushmen (2003-11-05 13:32:00) [22]
>Незнайка2003
Это была реплика на [4] И всё, а так 10 ответов было и все на тему рассуждений (что здесь часто и бывает.)
Извини, если ты решил, что это относится к тебе
Незнайка2003 (2003-11-05 13:30:00) [23]
Мне уроки по программированию не нужны, я хочу узнать, делал ли кто-нибудь данное действие и каким образом. Зачем на одни и те же грабли наступать?
> bushmen © (05.11.03 13:27) [6]
А если нечего сказать, я считаю лучше промолчать
bushmen (2003-11-05 13:27:00) [24]
Если тебе нужны уроки по программированию, то иди на курсы. А здесь люди не обязаны лекции читать. А слово "помощь" не означает, что сделают все для тебя.
Незнайка2003 (2003-11-05 13:26:00) [25]
Спасибо.
Хотелось бы еще варианты услышать.
На www.torry.net есть соответсвующий импорт, но эти компоненты платные.
Max_ (2003-11-05 12:17:00) [26]
Да я вчера спрашивал тоже только ничего не валит!
Файл трансформации создай через XML Mapper (утилита в Дельфе такая). Потом создай Data Packet,который и будет сидеть у тебя в СlientDataSet"e:
procedure TForm1.Button1Click(Sender: TObject);
const trans="c:\settings.xtr";
begin
XMLTransform1.SourceXmlFile:="c:\settings.xml";
XMLTransform1.TransformationFile:=trans;
ClientDataSet1.Close;
ClientDataSet1.XMLData:=XMLTransform1.Data;
ClientDataSet1.Open;
end;
этот код создаёт Data Packet из XML фаила!
Проблема в том как потом всё загруженное сохранить в таблице?
Такая штука не работает:
XMLTransformClient1.ApplyUpdates("c:\settings.xml","c:\settings.xtr",-1);
Она постоянно выкидывает ошибку: Parser Error at the top of docoment Line 1 Position 1.
Чего я только не делал и XML фаил исправлял и схемы разные перепробывал- не пашет! Здесь мне подсказали, что надо Файл трансформации как Insert Delta сохранять! И всё, а так 10 ответов было и все на тему рассуждений (что здесь часто и бывает.)
Незнайка2003 (2003-11-05 12:16:00) [27]
UP
Незнайка2003 (2003-11-05 11:10:00) [28]
Меня интересует как раз вариант 1.
Файл XML формируется из другой программы, выгрузка определенной таблицы. Мне нужно взять этот файл и закачать в свой набор данных. Как это проще и/или правильнее сделать?
При использовании ClientDataSet нужен файл трансформации, как его создать? Есть ли альтернатива ClientDataSet, в смысле другой DataSet, который бы загружал XML?
Mike_Goblin (2003-11-05 08:50:00) [29]
XML бывает разный (в смысле что структура документа XML может быть практически произвольной)
Оптимальный подход в данном вопросе:
1. Посмотреть не реализовал ли кто раньше задачу (Например ClientDataSet умеет сохранять и загружать свое содержимое в XML.)
2. Если нет, то писать парсинг XML документа. (Разобрать содержимое документа). Биться головой в стену не надо есть готовые парсеры (MS XML), Вам остается использовать их для анализа содержимого XML.
PS Телепатические способности почти полностью растратил вчера, неплохо бы ставить вопросы более конкретно :)))