Upload
moraes
View
213
Download
0
Embed Size (px)
Citation preview
7/25/2019 XML Binding Tutorial
1/5
Delphi Assistente de XML Binding Tutorial
Por: Andrea Raimondi
Resumo: O Delphi XML Binding Wizard requer algum conhecimento para ser usado. Eu
vou te mostrar ntrodu!"o
O assistente de liga!"o XML permite que desenvolvedores usando arquivos XML evitartoda a con#us"o relacionada com a gest"o do n$ XML. sso % o&tido por a&strair odocumento XML para um con'unto de inter#aces que de#inem os valores #inais( ao inv%s den$s. )omo o arquivo % tratado a n*vel de liga!"o
)ada arquivo XML % composto de um n$ raiz e os n$s #ilhos diversos.
sso signi#ica que o c$digo do n$ raiz ser+ uma heran!a de inter#ace de XmlDocument.
Em&ora isso possa parecer $&vio para usu+rios e,perientes( os novatos t-m que consideraro que isso signi#ica( porque isso implica v+rias outras coisas.
Em primeiro lugar( isso signi#ica que voc- pode acessar o documento XML su&'acenteoriginal se voc- tiver que e,ecutar algumas opera!es( tais como uma sele!"o X/ath.
Em segundo lugar( implica que 0 se voc- realmente quer 0 voc- pode reutilizar c$digo&aseando0se na inter#ace XMLDocument para a sua liga!"o actual. sso % 1til se voc- tiver(por e,emplo( rotinas de vincular um documento XML para uma +rvore 2que % &astantecomum3.
Em terceiro lugar( isso signi#ica que % muito #+cil gerar um tipo novo arquivo XML usandoa liga!"o e( em seguida( e,por o XML gerado( &asta utilizar a propriedade XML de tipo45trings.
n$s #ilhos s"o uma outra considera!"o. O assistente pode distinguir entre n$s decomposi!"o e simples. 6ssim( se voc- tiver um 7itens7 n$ com v+rios 7item7 n$s aninhados(o assistente ser+ su#icientemente inteligente para reconhecer o padr"o e acomodar o seuc$digo gerado em con#ormidade.
n$s #ilho pode derivar de qualquer XML8ode ou herdadas inter#ace de acordo com o tipode n$( e,ceto XMLDocument 2que % reservado( como mencionado acima( para o n$ raiz3.
9oc- vai notar que n"o h+ #un!"o alguma para criar um n$ #ilho a menos que se'a um n$ decomposi!"o.
sto % o que o assistente % toda so&re: voc- de#ine propriedades de inter#ace e Delphi vaicuidar da cria!"o de n$s.
7/25/2019 XML Binding Tutorial
2/5
5e( no entanto( h+ um n$ de composi!"o( n"o h+( ent"o vai ser um m%todo 6DD permitindoque voc- de#ina os n$s #ilhos. Este m%todo % uma #un!"o que retorna a inter#ace maisconveniente( como neste e,emplo:
var M)hild8ode: M)hild8ode;
come!ar M)hild8ode: < M/arent8ode.6dd; = = De#inir as propriedades M)hild8ode aqui( nos &astidores Delphi vai criar os n$s.e#eito;
>uando usar o assistente
O assistente pode ser utilizado na maioria das ocasies. ? muito 1til especialmente para osarquivos XML que podem #icar um pouco complicadas ou que n"o est"o so& nossocontrole. 6 melhor caracter*stica do assistente % que( se um novo esquema compat*vel comXML ou arquivo % enviado para voc-( voc- pode simplesmente voltar a gerar a #onte epronto. 6lternativas para o assistente
O principal( com o apoio( a alternativa para o assistente % o uso de um con'unto de dados docliente.
Em&ora n"o se'a e,atamente um arquivo XML no seu pr$prio m%rito 2ou se'a( o )D5 %realmente um &anco de dados3( pode ser guardado para XML e tam&%m pode sertrans#ormado 2usando o recurso de mapeamento XML3 em um arquivo XMLpersonalizado.
6ssim( voc- pode prot$tipo de seu modelo de dados utilizando um con'unto de dados docliente( trans#orm+0lo em um arquivo XML( aliment+0lo para o assistente( e voil@. O que para alimentar o assistente
O assistente de liga!"o pode ser alimentado com di#erentes tipos de arquivo ,ml:
Os arquivos de dados 2com e,tens"o. ,ml3 Esquema de arquivos 2com e,tens"o. ,sd3 arquivos X4R 2muito raro( apenas n"o me importo3
9oc- provavelmente vai alimentar o assistente com arquivos XML( menos prov+vel 2masainda muito poss*vel3 com as do esquema. 6 importa!"o de arquivos de e,emplo
9amos ver um e,emplo de arquivo XML.
A Xml version < 7C.7 encoding < 74F0CG7HArootelementHAchildnodes attrC
7/25/2019 XML Binding Tutorial
3/5
A= )hild8odeH attrI
7/25/2019 XML Binding Tutorial
4/5
NKEDD6F))0B)0GP0F0DQD6FISJGNT Os assessores da propriedade K UetV6ttrI #un!"o: nteger; UetV6ttrJ #un!"o: nteger; 5etV6ttrI procedimento 29alue: nteger3;
5etV6ttrJ procedimento 29alue: nteger3; KM%todos e /ropriedades 6ttrI propriedade: nteger ler UetV6ttrI escrever 5etV6ttrI; 6ttrJ propriedade: nteger ler UetV6ttrJ escrever 5etV6ttrJ; e#eito;
6gora( se olharmos para este c$digo #onte( veremos que( por e,emplo(76nother)hild8ode7 % uma seq-ncia simples( enquanto )hild8odes tem o #amoso.M%todo 6DD.
)omo voc- usa essas inter#aces ? muito simples:
procedimento 8eXMLFile 2#ora Root8ode: XMLRootelement4pe;6nother)hildElement: 5tring3;come!ar Root8ode: 8eRootelement
7/25/2019 XML Binding Tutorial
5/5
6ssim( voc- n"o deve us+0lo quando voc- n"o precisar de todos o documento na mem$ria.m e,emplo disso pode ser( por e,emplo( algum tipo de gerador de marca &aseado.)onsidere este arquivo XML:
A Xml version < 7C.7HA&uildH AtasZde#sH AtasZde# name