Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сконвертить базу данных в xml? 
:(
    Опции темы
NULL
  Дата 31.10.2003, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как сконвертить базу данных в xml?
PM MAIL ICQ   Вверх
Vit
Дата 31.10.2003, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



Если через ADO то оно имеет встроенные методы сохранения в XML, если через BDE тогда руками.


--------------------
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   Вверх
Vit
Дата 31.10.2003, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



Держи код:

Код
Procedure CreateXML(Alias:string; XMLName:string);
 var i,j,x,y:integer;
     f:TextFile;
     Tables:TStringList;
     Table:TTable;

 Function FixValue(Value:string):string;
   var n:integer;
 begin
   Result:='';
   For n:=1 to length(Value) do
     if Value[n] in ['0'..'9','a'..'z','A'..'Z','.',',','-',' ','/','*',':','{','}','_','@','\','+','%'] then
       result:=Result+Value[n]
     else
       result:=Result+'&#'+inttostr(ord(Value[n]))+';';
 end;

 Procedure WriteValue(Indent:integer; Name, ParamName, ParamValue, Value:string);
   var temp:string;
   const Empty='                                                             ';
 begin
   Temp:=Copy(empty,1,Indent);
   temp:=temp+'<'+Name;
   if ParamName='' then temp:=temp+'>' else temp:=temp+' '+Paramname+'="'+FixValue(ParamValue)+'">';
   Temp:=Temp+FixValue(Value)+'</'+Name+'>';
   Writeln(f,temp);
 end;

 Procedure WriteTag(Indent:integer; Name, ParamName, ParamValue:string; Open:boolean=True);
   var temp:string;
   const Empty='                                                             ';
 begin
   Temp:=Copy(empty,1,Indent);
   if Open then temp:=temp+'<'+Name else temp:=temp+'</'+Name;
   if ParamName='' then temp:=temp+'>' else temp:=temp+' '+Paramname+'="'+FixValue(ParamValue)+'">';
   Writeln(f,temp);
 end;

begin
 Tables:=TStringList.Create;
 Table:=TTable.Create(nil);
 try
   session.GetTableNames(Alias, '*.db',False, False, Tables);
   Table.DatabaseName:=Alias;
   assignFile(f,XMLName);
   reWrite(f);
   WriteTag(0, Alias, '', '', True);
   for i:=0 to Tables.Count-1 do
     begin
       Table.Active:=false;
       Table.TableName:=Tables[i];
       WriteTag(1, Table.tablename, '', '', True);
       Table.Active:=true;
       Table.First;
       For j:=0 to Table.RecordCount-1 do
         begin
           WriteTag(2, 'Rec', '', '', True);
           For x:=0 to Table.fields.count-1 do  
             WriteValue(4, Table.fields[x].FieldName, '', '', Table.fields[x].asstring);
           WriteTag(2, 'Rec', '', '', False);
           Table.Next;
         end;
       WriteTag(1, Table.tablename, '', '', False);
     end;
   WriteTag(0, Alias, '', '', False);
   CloseFile(f);
 finally
   Tables.free;
   Table.free;
 end;

end;



procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateXML('c:\Dev\databases\MyDatabase', 'c:\XMLFile.xml');
end;



XML формируется в ввиде
Код

 <MyDatabase>
   <Table1>
     <Rec>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
     </Rec>
     <Rec>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
     </Rec>
   </Table1>
   <Table2>
     <Rec>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
     </Rec>
     <Rec>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
     </Rec>
   </Table2>
 </MyDatabase>



--------------------
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   Вверх
man2002ua
Дата 31.10.2003, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

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



Vit, я надеюсь этот код сохранится в FAQ? wink.gif


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
Vit
Дата 31.10.2003, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



Цитата(man2002ua @ 31.10.2003, 09:08)
Vit, я надеюсь этот код сохранится в FAQ? wink.gif

Уже там smile.gif


--------------------
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   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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