Difference between revisions of "XML Tutorial/pt"
(→Exemplo Básico: Adicionada formatação... ToDo: Traduzir algumas partes para o inglês (en)) |
|||
Line 13: | Line 13: | ||
Vamos dizer que você precisa acessar um arquivo XML chamado: 'C:\Programas\teste.xml'. Aqui esta o conteúdo do arquivo: | Vamos dizer que você precisa acessar um arquivo XML chamado: 'C:\Programas\teste.xml'. Aqui esta o conteúdo do arquivo: | ||
− | < | + | <xml> |
<?xml version="1.0"?> | <?xml version="1.0"?> | ||
<images directory="mydir"> | <images directory="mydir"> | ||
Line 21: | Line 21: | ||
</imageNode> | </imageNode> | ||
</images> | </images> | ||
− | </ | + | </xml> |
O seguinte código pode escrever o nome dos nós num objeto TMemo no formulário: | O seguinte código pode escrever o nome dos nós num objeto TMemo no formulário: | ||
− | < | + | <delphi> |
var | var | ||
Documento: TXMLDocument; | Documento: TXMLDocument; | ||
Line 46: | Line 46: | ||
Documento.Free; | Documento.Free; | ||
end; | end; | ||
− | </ | + | </delphi> |
Código inteiro para escrever em arquivo XML: | Código inteiro para escrever em arquivo XML: | ||
(Lembrar das bibliotecas DOM e XMLWrite na cláusula uses) | (Lembrar das bibliotecas DOM e XMLWrite na cláusula uses) | ||
+ | <delphi> | ||
unit Unit1; | unit Unit1; | ||
{$mode objfpc}{$H+} | {$mode objfpc}{$H+} | ||
Line 118: | Line 119: | ||
end. | end. | ||
+ | </delphi> | ||
Resulta em: | Resulta em: | ||
− | + | ||
+ | <xml> | ||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | ||
- <cadastro> | - <cadastro> | ||
Line 128: | Line 131: | ||
</usuario> | </usuario> | ||
</cadastro> | </cadastro> | ||
+ | </xml> | ||
baseado no site: | baseado no site: | ||
− | [http://develazarus.wordpress.com/2007/07/12/generando-un-archivo-xml/] | + | [http://develazarus.wordpress.com/2007/07/12/generando-un-archivo-xml/ http://develazarus.wordpress.com/2007/07/12/generando-un-archivo-xml/] |
--[[User:Fernandosinesio|Fernandosinesio]] 22:28, 24 April 2008 (CEST)fernandosinesio@gmail.com | --[[User:Fernandosinesio|Fernandosinesio]] 22:28, 24 April 2008 (CEST)fernandosinesio@gmail.com |
Revision as of 03:27, 25 April 2008
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
magyar (hu) │
Bahasa Indonesia (id) │
italiano (it) │
日本語 (ja) │
한국어 (ko) │
português (pt) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Introdução
A "Extensible Markup Language" é uma linguagem recomendada pela W3C para a troca de informações entre diferentes sistemas. É um formato baseado em texto de guardar informações. Linguagens modernas de troca de dados, como o XHTML, além da maioria das tecnologia de WebServices, são baseados no XML.
Atualmente há um conjunto de unidades que dão suporte para o XML no Lazarus. Estas unidades são "XMLRead", "XMLWrite" e "DOM" e elas são parte da Biblioteca de Componentes Livre(FCL) do compilador Free Pascal. A FCL esta sempre presente no caminho padrão para o compilador no Lazarus, então você somente precisa adicionar as unidades na claúsula uses para ter suporte ao XML. A FCL não está com sua documentação atualizada(desde outubro de 2005), então este curto tutorial é uma introdução ao acesso a XML usando estas unidades.
O XML DOM (Documento de Modelo do Objeto) é um conjunto padronizações de objetos que fornece uma interface para uso em diferentes linguagens e sistemas. O padrão somente especifica os métodos, propriedades e outras partes da interface do objeto, deixando a implementação livre para diferentes linguagens. A FCL atualmente suporta completamente a DOM 1.0.
Exemplo Básico
Vamos dizer que você precisa acessar um arquivo XML chamado: 'C:\Programas\teste.xml'. Aqui esta o conteúdo do arquivo:
<xml>
<?xml version="1.0"?> <images directory="mydir"> <imageNode URL="graphic.jpg" title=""> <Peca DestinoX="0" DestinoY="0">Pecacastelo.jpg1.swf</Peca> <Peca DestinoX="0" DestinoY="86">Pecacastelo.jpg2.swf</Peca> </imageNode> </images>
</xml>
O seguinte código pode escrever o nome dos nós num objeto TMemo no formulário:
<delphi>
var Documento: TXMLDocument; i, j: Integer; begin ReadXMLFile(Documento, 'C:\Programas\teste.xml'); Memo.Lines.Clear; with Documento.DocumentElement.ChildNodes do begin for i := 0 to (Count - 1) do begin Memo.Lines.Add(Item[i].NodeName + ' ' + Item[i].NodeValue); for j := 0 to (Item[i].ChildNodes.Count - 1) do begin Memo.Lines.Add(Item[i].ChildNodes.Item[j].NodeName + ' ' + Item[i].ChildNodes.Item[j].NodeValue); end; end; end; Documento.Free; end;
</delphi>
Código inteiro para escrever em arquivo XML: (Lembrar das bibliotecas DOM e XMLWrite na cláusula uses)
<delphi>
unit Unit1; {$mode objfpc}{$H+} interface
uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, DOM, XMLWrite, StdCtrls;
type { TForm1 } TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation { TForm1 }
procedure TForm1.Button1Click(Sender: TObject); var xdoc: TXMLDocument; //variável para o documento noraiz, nopai, nofilho: TDOMNode; //variáveis dos Nós
begin
//cria um documento xdoc := TXMLDocument.create;
//cria Nó raiz noraiz := xdoc.CreateElement('cadastro'); Xdoc.Appendchild(noraiz); //salva Nó raiz
//cria Nó pai noraiz:= xdoc.DocumentElement; nopai := xdoc.CreateElement('usuario'); TDOMElement(nopai).SetAttribute('id', '001'); //cria atributo para o Nó pai noraiz.Appendchild(nopai); //salva nó pai
//cria Nó Filho nopai := xdoc.CreateElement('nome'); //cria Nó Filho //TDOMElement(nopai).SetAttribute('sexo', 'M'); //cria atributo nofilho := xdoc.CreateTextNode('Fernando'); //insere valor para o nó nopai.Appendchild(nofilho); //salva nó noraiz.ChildNodes.Item[0].AppendChild(nopai); //insere o nó filho ao nó pai correspondente
//cria Nó Filho nopai := xdoc.CreateElement('idade'); //cria Nó Filho //TDOMElement(nopai).SetAttribute('ano', '1976'); //cria atributo nofilho := xdoc.CreateTextNode('32'); //insere coloca valor nó nopai.Appendchild(nofilho); //salva nó noraiz.ChildNodes.Item[0].AppendChild(nopai); //insere o nó filho ao nó pai correspondente
writeXMLFile(xDoc,'teste.xml'); //escreve XML Xdoc.free; //libera memória end; initialization {$I unit1.lrs} end.
</delphi>
Resulta em:
<xml>
<?xml version="1.0" ?> - <cadastro> - <usuario id="001"> <nome>Fernando</nome> <idade>32</idade> </usuario> </cadastro>
</xml>
baseado no site: http://develazarus.wordpress.com/2007/07/12/generando-un-archivo-xml/
--Fernandosinesio 22:28, 24 April 2008 (CEST)fernandosinesio@gmail.com