Difference between revisions of "XML Tutorial/pt"
Line 97: | Line 97: | ||
//cria Nó Filho | //cria Nó Filho | ||
nopai := xdoc.CreateElement('nome'); //cria Nó Filho | nopai := xdoc.CreateElement('nome'); //cria Nó Filho | ||
− | //TDOMElement( | + | //TDOMElement(nopai).SetAttribute('sexo', 'M'); //cria atributo |
nofilho := xdoc.CreateTextNode('Fernando'); //insere valor para o nó | nofilho := xdoc.CreateTextNode('Fernando'); //insere valor para o nó | ||
nopai.Appendchild(nofilho); //salva nó | nopai.Appendchild(nofilho); //salva nó | ||
Line 104: | Line 104: | ||
//cria Nó Filho | //cria Nó Filho | ||
nopai := xdoc.CreateElement('idade'); //cria Nó Filho | nopai := xdoc.CreateElement('idade'); //cria Nó Filho | ||
− | //TDOMElement( | + | //TDOMElement(nopai).SetAttribute('ano', '1976'); //cria atributo |
nofilho := xdoc.CreateTextNode('32'); //insere coloca valor nó | nofilho := xdoc.CreateTextNode('32'); //insere coloca valor nó | ||
nopai.Appendchild(nofilho); //salva nó | nopai.Appendchild(nofilho); //salva nó |
Revision as of 22:46, 24 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 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>
O seguinte código pode escrever o nome dos nós num objeto TMemo no formulário:
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;
Código inteiro para escrever em arquivo XML: (Lembrar das bibliotecas DOM e XMLWrite na cláusula uses)
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.
Resulta em:
<?xml version="1.0" ?> - <cadastro> - <usuario id="001"> <nome>Fernando</nome> <idade>32</idade> </usuario> </cadastro> baseado no site: [1]
--Fernandosinesio 22:28, 24 April 2008 (CEST)fernandosinesio@gmail.com