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:
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:
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:
Figura 3.
Inclua, exclua, altere alguns registros no DBGrid e salve novamente o XML. Abra o arquivo para examinarmos seu formato.