XML Binding Tutorial

  • 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