Цитата:
Сообщение от NumLock
вот один из вариантов:
Код:
type
TForm1 = class(TForm)
Button1: TButton;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
DBGrid1: TDBGrid;
OpenDialog1: TOpenDialog;
XMLDocument1: TXMLDocument;
var
l: Integer;
i: Integer;
ADOMNodeList: IDOMNodeList;
ADOMNode: IDOMNode;
j: Integer;
begin
if OpenDialog1.Execute then
begin
XMLDocument1.LoadFromFile(OpenDialog1.FileName);
ADOMNodeList:=XMLDocument1.DOMDocument.getElementsByTagName('ROW');
l:=ADOMNodeList.length;
for i:=0 to l-1 do
begin
ADOMNode:=ADOMNodeList.item[i];
if i=0 then
begin
ClientDataSet1.FieldDefs.Clear;
for j:=0 to ADOMNode.childNodes.length-1 do
begin
ClientDataSet1.FieldDefs.Add(ADOMNode.childNodes.item[j].nodeName, ftString, 10);
end;
ClientDataSet1.CreateDataSet;
end;
ClientDataSet1.Append;
for j:=0 to ADOMNode.childNodes.length-1 do
begin
if ADOMNode.childNodes.item[j].childNodes.length>0 then
ClientDataSet1.FieldByName(ADOMNode.childNodes.item[j].nodeName).AsString:=
ADOMNode.childNodes.item[j].childNodes.item[0].nodeValue
else if ADOMNode.childNodes.item[j].attributes.length>0 then
ClientDataSet1.FieldByName(ADOMNode.childNodes.item[j].nodeName).AsString:=
ADOMNode.childNodes.item[j].attributes.item[0].nodeValue;
end;
ClientDataSet1.Post;
end;
end;
|
Да! Это то что нужно!!
Примерно понял как нужно делать, теперь буду подстраивать под свою утилиту.
Спасибо, огромное NumLock за помощь!!!
P.S.
Хотел еще вот что спросить: читал в сети, что с XML-файлами можно работать как с готовой таблицей БД. Так ли это?
В чем отличия от работы с СУБД Access или другими? Есть ли преимущества? Слишком это сложно?
Вопросы чисто для спортивного интереса, свою программку буду делать на том, что знаю...
Спасибо!