Difference between revisions of "XML Tutorial/pt"

From Lazarus wiki
Jump to navigationJump to search
(→‎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:
  
<code>
+
<xml>
 
  <?xml version="1.0"?>
 
  <?xml version="1.0"?>
 
  <images directory="mydir">
 
  <images directory="mydir">
Line 21: Line 21:
 
   </imageNode>
 
   </imageNode>
 
  </images>
 
  </images>
</code>
+
</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:
  
<code>
+
<delphi>
 
  var
 
  var
 
   Documento: TXMLDocument;
 
   Documento: TXMLDocument;
Line 46: Line 46:
 
   Documento.Free;
 
   Documento.Free;
 
  end;
 
  end;
</code>
+
</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