|
Usuários |
|
108 Usuários Online
|
|
[Artigos]
Tutorial - Transformando XML DataPacket (Formato de Pacote de Dados) em XML |
Publicado por ActiveDelphi : Domingo, Fevereiro 19, 2006 - 10:07 GMT-3 (10595 leituras)
comentar Enviar para um amigo Versão para impressão
|
Primeiramente vamos adicionar em um Form, dois botões, um Memo, um ClientDataset, um DataSource, um XMLTransform e um Grid... Criar um arquivo (no bloco de notas,
por exemplo) e salvar como country_dp.xml contendo a seguinte estrutura:
<?xml version="1.0" standalone="yes" ?>
- <DATAPACKET Version="2.0">
- <METADATA>
- <FIELDS>
<FIELD attrname="Name" fieldtype="string" WIDTH="24" />
<FIELD attrname="Capital" fieldtype="string" WIDTH="24" />
<FIELD attrname="Continent" fieldtype="string" WIDTH="24" />
<FIELD attrname="Area" fieldtype="r8" />
<FIELD attrname="Population" fieldtype="r8" />
</FIELDS>
<PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="2057" />
</METADATA>
- <ROWDATA>
<ROW Name="Brazil" Capital="Brasilia" Continent="South America" Area="8511196"
Population="150400000" />
<ROW Name="Cuba" Capital="Havana" Continent="North America" Area="114524"
Population="10600000" />
</ROWDATA>
</DATAPACKET>
Colocar o ClientDataset acessando o XML pela propriedade FileName.
Informar no DataSource a propriedade Dataset para o componente ClientDataset.
Criar um arquivo no Bloco de Notas e salvar com o nome de Country_ToXml.xtr e
adicionar a seguinte estrutura ao mesmo:
<XmlTransformation Version="1.0"><Transform Direction="ToXml"
DataEncoding="ISO-8859-1"><SelectEach from="DATAPACKET\ROWDATA\ROW" dest="\Countries\Country"><Select
from="@Name" dest="\Name"/><Select from="@Capital" dest="\Capital"/><Select from="@Continent"
dest="\Continent"/><Select from="@Area" dest="\Area"/><Select from="@Population"
dest="\Population"/></SelectEach></Transform><XmlSchema RootName="Countries"><![CDATA[<xs:schema
xmlns:xs="http://www.w3.org/2000/10/XMLSchema"><xs:element name="Countries" type="CountriesType"/><xs:complexType
name="CountriesType"><xs:sequence><xs:element name="Country" type="CountryType"
minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType><xs:element
name="Country" type="CountryType"/><xs:complexType name="CountryType"><xs:sequence><xs:element
name="Name" type="NameType"/><xs:element name="Capital" type="CapitalType"/><xs:element
name="Continent" type="ContinentType"/><xs:element name="Area" type="AreaType"/><xs:element
name="Population" type="PopulationType"/></xs:sequence></xs:complexType><xs:element
name="Name" type="NameType"/><xs:simpleType name="NameType"><xs:restriction
base="xs:string"/></xs:simpleType><xs:element name="Capital" type="CapitalType"/><xs:simpleType
name="CapitalType"><xs:restriction base="xs:string"/></xs:simpleType><xs:element
name="Continent" type="ContinentType"/><xs:simpleType name="ContinentType"><xs:restriction
base="xs:string"/></xs:simpleType><xs:element name="Area" type="AreaType"/><xs:simpleType
name="AreaType"><xs:restriction base="xs:string"/></xs:simpleType><xs:element
name="Population" type="PopulationType"/><xs:simpleType name="PopulationType"><xs:restriction
base="xs:string"/></xs:simpleType></xs:schema>]]></XmlSchema><CdsSkeleton><![CDATA[<DATAPACKET
Version="2.0"><METADATA><FIELDS><FIELD attrname="Name" fieldtype="string" WIDTH="24"/><FIELD
attrname="Capital" fieldtype="string" WIDTH="24"/><FIELD attrname="Continent"
fieldtype="string" WIDTH="24"/><FIELD attrname="Area" fieldtype="r8"/><FIELD
attrname="Population" fieldtype="r8"/></FIELDS><PARAMS DEFAULT_ORDER="1"
PRIMARY_KEY="1" LCID="2057"/></METADATA><ROWDATA/></DATAPACKET>
]]></CdsSkeleton><XslTransform/><Skeleton><![CDATA[<?xml version="1.0"?>
<Countries><Country><Name></Name><Capital></Capital><Continent></Continent><Area></Area><Population></Population></Country></Countries>
]]></Skeleton></XmlTransformation>
Obs.: Esse arquivo foi criado no utilitário do Delphi, chamado XMLMapper na aba
Tools, para maiores informações abrir o mesmo(Country_ToXml.xtr) neste programa.
No componente XMLTransform, propriedade TransformationFile, informar o arquivo
Country_ToXml.xtr
No primeiro Botão Colocar o Caption como "Publicar XML" e no evento onclick o
seguinte código:
XMLTransform.SourceXMLFile := 'country_dp.xml';
// associa o arquivo de dados de origem
Memo1.Text := XMLTransform1.Data;
// Exibe os dados convertidos de acordo com o formato definido no arquivo
//Country_ToXml.xtr definido no XMLMapper
No segundo Botão colocar o caption como "Salvar XML" e no evento onclick colocar
o seguinte código:
(XMLTransform.ResultDocument as IDOMPersist).save(XMLTransform.xml);
Rodar e clicar no Publicar e posteriormente no salvar.
Ele vai gerar o XML no formato Comum, diferente do padrão (proprietário) do
ClientDataset e salvar no arquivo XMLTransform.xml com um código como o abaixo:
<?xml version="1.0" ?>
- <Countries>
- <Country>
<Name>Brazil</Name>
<Capital>Brasilia</Capital>
<Continent>South America</Continent>
<Area>8511196</Area>
<Population>150400000</Population>
</Country>
- <Country>
<Name>Cuba</Name>
<Capital>Havana</Capital>
<Continent>North America</Continent>
<Area>114524</Area>
<Population>10600000</Population>
</Country>
</Countries>
Por: Fábio Corrêa da Cruz
fbiocorrea@yahoo.com.br
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|