Показать сообщение отдельно
  #8  
Старый 02.09.2011, 15:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вот один из вариантов:
Код:
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;
Вложения
Тип файла: rar xml.rar (2.6 Кбайт, 39 просмотров)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием