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))
(→‎Introdução: - Update translation)
Line 1: Line 1:
 
{{XML Tutorial}}
 
{{XML Tutorial}}
  
=== Introdução ===
+
== Introdução ==
  
A "Extensible Markup Language" é uma linguagem recomendada pela [http://www.w3.org/ 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.
+
A "Extensible Markup Language" é uma linguagem recomendada pela [http://www.w3.org/ W3C] criada para a troca de informações entre diferentes sistemas. É um formato baseado em texto para armazenar informações. Linguagens modernas de troca de dados, como XHTML, bem como a 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.
+
Atualmente há um conjunto de units que fornecem suporte para o XML no Free Pascal. Estas units são chamadas "XMLRead", "XMLWrite" e "DOM" e elas são parte da Biblioteca de Componentes Livre (FCL) do compilador Free Pascal. A FCL esta presente no caminho de busca (search path) padrão para o compilador no Lazarus, assim você precisa adicionar as units na claúsula uses para ter suporte ao XML. A FCL não está com sua documentação atualizada (Outubro/2005), assim este pequeno tutorial é uma introdução ao acesso a XML usando estas units.
  
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 [http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/|XML DOM 1.0].
+
O XML DOM (Modelo Objeto de Documento) é um conjunto objetos padronizados que fornece uma interface similar para uso em diferentes linguagens e sistemas. O padrão especifica os métodos, propriedades e outras partes da interface do objeto, deixando a implementação liberada para diferentes linguagens. A FCL atualmente tem suporte completo a [http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/|XML DOM 1.0].
  
 
===Exemplo Básico===
 
===Exemplo Básico===

Revision as of 03:36, 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 criada para a troca de informações entre diferentes sistemas. É um formato baseado em texto para armazenar informações. Linguagens modernas de troca de dados, como XHTML, bem como a maioria das tecnologia de WebServices, são baseados no XML.

Atualmente há um conjunto de units que fornecem suporte para o XML no Free Pascal. Estas units são chamadas "XMLRead", "XMLWrite" e "DOM" e elas são parte da Biblioteca de Componentes Livre (FCL) do compilador Free Pascal. A FCL já esta presente no caminho de busca (search path) padrão para o compilador no Lazarus, assim você só precisa adicionar as units na claúsula uses para ter suporte ao XML. A FCL não está com sua documentação atualizada (Outubro/2005), assim este pequeno tutorial é uma introdução ao acesso a XML usando estas units.

O XML DOM (Modelo Objeto de Documento) é um conjunto objetos padronizados que fornece uma interface similar para uso em diferentes linguagens e sistemas. O padrão só especifica os métodos, propriedades e outras partes da interface do objeto, deixando a implementação liberada para diferentes linguagens. A FCL atualmente tem suporte completo 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