Curso de dbExpress e DataSnap

Parte XII – ClientDataSet e XML

 

Neste artigo veremos alguns interessantes recursos do ClientDataSet para suporte a XML. Através de uma aplicação dbExpress típica, vamos salvar os dados obtidos em XML para o disco, ler, examinar a estrutura do DataPacket e o XML em memória.

O suporte a XML não se restringe simplesmente ao salvamento dos dados para o disco em um formato estruturado. A Borland inclui essa funcionalidade no componente para que possamos facilmente trafegar DataSets pela Web em formato XML, usando o SOAP (Simple Object Access Protocol).

Configure uma conexão dbExpress para o banco EMPLOYEE do Interbase. Coloque um SQLConnection apontando para essa conexão. Coloque também duas SQLQuery, um DataSetProvider, um ClientDataSet, dois DataSources, um DBGrid, quatro Buttons, um DBNavigator, um Memo e um TWebBrowser (paleta Internet).

Relacione os componentes conforme mostrado a seguir:

 

object SQLConnection1: TSQLConnection

end

 

object SQLQuery1: TSQLQuery

  SQLConnection = SQLConnection1

End

 

object SQLQuery1: TSQLQuery

  SQLConnection = SQLConnection1

End

 

object DataSetProvider1: TDataSetProvider

  DataSet = SQLQuery1

End

 

object DBGrid1: TDBGrid

  DataSource = DataSource2

End

 

object DBNavigator1: TDBNavigator

  DataSource = DataSource2

End

 

object ClientDataSet1: TClientDataSet

  ProviderName = 'DataSetProvider1'

End

 

A instrução SQL da SQLQuery1 é mostrada a seguir:

 

select * from EMPLOYEE

 

Seu formulário deve estar semelhante ao mostrado a seguir:

Archive12_1.gif 

Figura 1.

 

O código do botão Open é mostrado a seguir:

 

procedure TForm1.btnOpenClick(Sender: TObject);

begin

  ClientDataSet1.Open;

end;

 

O código do botão Save XML é mostrado a seguir:

 

procedure TForm1.Button2Click(Sender: TObject);

begin

  ClientDataSet1.SaveToFile('c:\Employee.xml');

  WebBrowser1.Navigate('file:///c:\Employee.xml');

end;

 

O código do botão Load XML é mostrado a seguir:

 

procedure TForm1.Button3Click(Sender: TObject);

begin

  ClientDataSet1.LoadFromFile('c:\Employee.xml');

end;

 

O código do botão XML Data é mostrado a seguir:

 

procedure TForm1.Button4Click(Sender: TObject);

begin

  Memo1.Lines.Text := ClientDataSet1.XMLData;

end;

 

Execute a aplicação e clique nos botões Open, Save XML e XML Data. Observe o resultado na figura a seguir:

Archive12_2.gif 

Figura 2.

A propriedade XMLData, somente-leitura, permite o acesso as dados em XML do ClientDataSet sem a necessidade de salvamento no disco, ideal para por exemplo trafegarmos informações via Web Services / SOAP.

O método SaveToFile salva o DataPacket para o disco. Usamos um WebBrowser para exibir o XML dentro do form, através de um plugin do Internet Explorer usado pelo componente. Observe que você pode expandir e reduzir nodes. Também é possível fazer isso no browser, claro:

Archive12_3.gif 

Figura 3.

Inclua, exclua, altere alguns registros no DBGrid e salve novamente o XML. Abra o arquivo para examinarmos seu formato.