Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi, xml и БД 
:(
    Опции темы
i...
Дата 4.4.2004, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 6.5.2003

Репутация: нет
Всего: нет



Задача: нужно сделать реляционную базу данных, используя xml. Создаю xml'ку и описываю в ней нужные таблицы и поля. В XML Mapper'e делаю из xml datapacket, и все работает: можно как читать данные из datapacket, так и записывать. Но это не то, что нужно! Нужно работать с xml напрямую, использую transformation (*.xtr файлики). В XML Mapper создал два файла: ToDp.xtr (XML to DataPacket) и ToXml.xtr (DataPacket to XML). Подключил их в Delphi при помощи XMLTransformProvider... Данные отображаются, пробую записать данные в БД, добавив пару строчек, а их в xml'ке нет. Прочитал хелп, зря читал, точно так же я все делал.

Подскажите, пожалуйста, кто сталкивался с таким же и кто не сталкивался, в чем проблема.
PM MAIL   Вверх
Vit
Дата 5.4.2004, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Покажи код


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
i...
Дата 6.4.2004, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 6.5.2003

Репутация: нет
Всего: нет



Цитата(Vit @ 5.4.2004, 20:58)
Покажи код

Сам xml (db.xml):
<?xml version="1.0" ?>
<database>
<first>
<one>1</one>
<two>2</two>
<three>3</three>
</first>
</database>

Плюс файлы transformations, сделанные при помощи XML Mapper.

Из xml to datapacket (ToDP.xtr):
<XmlTransformation Version="1.0"><Transform Direction="ToCds"><SelectEach dest="DATAPACKET\ROWDATA\ROW" from="\database\first"><Select dest="@one" from="\one"/><Select dest="@two" from="\two"/><Select dest="@three" from="\three"/></SelectEach></Transform><XmlSchema RootName="database"><![CDATA[<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="database" type="databaseType"/>
<xs:complexType name="databaseType">
<xs:sequence>
<xs:element name="first" type="firstType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="first" type="firstType"/>
<xs:complexType name="firstType">
<xs:sequence>
<xs:element name="one" type="oneType"/>
<xs:element name="two" type="twoType"/>
<xs:element name="three" type="threeType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="one" type="oneType"/>
<xs:simpleType name="oneType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="two" type="twoType"/>
<xs:simpleType name="twoType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="three" type="threeType"/>
<xs:simpleType name="threeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:schema>]]></XmlSchema><CdsSkeleton/><XslTransform/><Skeleton><![CDATA[<?xml version="1.0"?><DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/></DATAPACKET>
]]></Skeleton></XmlTransformation>

Из datapacket to xml (ToXML.xtr):
<XmlTransformation Version="1.0"><Transform Direction="ToXml"><SelectEach from="DATAPACKET\ROWDATA\ROW" dest="\Document\ROW"><Select from="@one" dest="\one"/><Select from="@two" dest="\two"/><Select from="@three" dest="\three"/></SelectEach></Transform><XmlSchema RootName="Document"><![CDATA[<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Document" type="DocumentType"/>
<xs:complexType name="DocumentType">
<xs:sequence>
<xs:element name="ROW" type="ROWType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ROW" type="ROWType"/>
<xs:complexType name="ROWType">
<xs:sequence>
<xs:element name="one" type="oneType"/>
<xs:element name="two" type="twoType"/>
<xs:element name="three" type="threeType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="one" type="oneType"/>
<xs:simpleType name="oneType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="two" type="twoType"/>
<xs:simpleType name="twoType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="three" type="threeType"/>
<xs:simpleType name="threeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:schema>]]></XmlSchema><CdsSkeleton><![CDATA[<DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/></DATAPACKET>
]]></CdsSkeleton><XslTransform/><Skeleton><![CDATA[<?xml version="1.0"?>
<Document><ROW><one></one><two></two><three></three></ROW></Document>
]]></Skeleton></XmlTransformation>

В Delphi на форму кидаю DBGrid, XMLTransformProvider, ClientDataSet, DataSource.

В XMLTransformProvider заполняю:
XMLDataFile := db.xml;
TransformationFile := ToDp.xtr (это у TransformRead);
TransformationFile := ToXML.xtr (это у TransformWrite);

В ClientDataSet:
ProviderName := XMLTransformProvider;
Active := True;

В DataSource:
DataSet := ClientDataSet;

В DBGrid:
DataSource := DataSource;

И все! Press F9. В DBGrid три колонки One, Two, Three и данные 1, 2, 3, соответственно.
Читать - читаем, а писать в базу - не пишем.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.