Jump to content


Photo

Php + Xml - Básico Para Começar!


  • Faça o login para participar
5 replies to this topic

#1 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 15/12/2004, 12:53

Olá! :yes:

Acho que todos aqui já conhecem o XML, certo? =) Bom, também acredito que a maioria saiba que o PHP possui várias funções para trabalhar e manipular arquivos XML. Vamos ver algumas das principais neste tutorial:

Vamos usar neste exemplo, o arquivo XML: data.xml

<list>
  <languages type="interpreted">
    <name>PHP</name>
    <name>Python</name>
    <name>Ruby</name>
    <details>
      <name>ASP</name>
      <owner>Microsoft</owner>
      <effect>SUX!</effect>
    </details>
  </languages>
  <languages type="compiled">
    <name>C</name>
    <name>Fortan</name>
    <name>Pascal</name>
    <name>Delphi</name>
  </languages>
</list>


Você pode usar outro se quiser. Agora vamos dar uma olhada no arquivo PHP, que irá manipular este documento XML:

<?php

  function openingElement ($parser, $element, $attributes) {
   
    echo "<div>";
   
    echo "&lt;$element";
   
    foreach ($attributes as $name => $value) {
   
      echo " $name=\"$value\"";
     
    }
   
    echo ">";
   
  }
 
  function closingElement ($parser, $element) {
   
    echo "&lt;/$element></div>";
   
  }
 
  function dataHandler ($parser, $data) {
   
    echo "<i>$data</i>";
   
  }
 
  $parser = xml_parser_create();
  xml_parser_set_option ($parser, XML_OPTION_CASE_FOLDING, false);
  xml_set_element_handler ($parser, "openingElement", "closingElement");
  xml_set_character_data_handler ($parser, "dataHandler");
 
  $file = file ("data.xml");
 
  foreach ($file as $line) {
   
    xml_parse ($parser, $line);
   
  }
 
  xml_parser_free ($parser);

?>


Veja este exemplo

Grande? Não... =) Vamos analisar as funções do PHP.

$parser = xml_parser_create(); Linha: 31

Esta função cria um parser (interpretador) para arquivos XML e o armazena na variável $parser.

xml_parser_set_option ($parser, XML_OPTION_CASE_FOLDING, false); Linha: 32

Esta função apenas desabilita a opção CASE FOLDING. Leia mais...

xml_set_element_handler ($parser, "openingElement", "closingElement"); Linha: 33

Dentro de um arquivo temos elementos (tags). Temos elementos de início e fechamento, igual ao HTML, exemplo: <estados> e </estados>, início e fechamento, respectivamente.

Usando o xml_set_element_handler, definimos quais serão as funções que serão pela manipulação (handling) desses elementos. Se você reparar, mais acima, temos ambas as funções já definidas, openingElement para os elementos de início e, closingElement para os de encerramento.

Para a função de início, o PHP se encarregará de passar 3 argumentos, o parser criado, o nome do elemento e, os atributos do elemento (em forma de matriz - array). Para a função de encerramento, o PHP enviará o parser criado, e o nome do elemento. Lembrando que elementos de encerramento não possuem atributos...

xml_set_character_data_handler ($parser, "dataHandler"); Linha: 34

Muito semelhante, porém o xml_set_character_data_handler, vai especificar qual a função responsável pela manipulação dos dados dos elementos.

$file = file ("data.xml"); Linha: 36

Não é uma função XML. file() lê um arquivo e coloca suas linhas em diferentes índices de uma matriz.

foreach ($file as $line) { Linha: 38

Não é uma função XML. Para cada linha do arquivo...

xml_parse ($parser, $line); Linha: 40

Interpreta a linha fornecida. O PHP se encarregará de reconhecer e distingüir elementos de dados.

xml_parser_free ($parser); Linha: 44

Libera a memória usado pelo parser criado.

As funções criadas são simples demais, simplesmente exibem os elementos passados. Não tem segredo nelas.

Com um pouco mais de criatividade, pode-se fazer alguns exemplos mais interessantes. (hehehe... parece tutorial de Photoshop...)

Veja outro exemplo - Veja o código-fonte

[]´s e sucesso a todos!
Klaus Paiva
Conheça também: Taperás

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 17/12/2004, 10:00

Nossa.... show prof.!

Continua dando esse curso pra nós ae!!
:D
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 Tash

Tash

    Alexandre Gomes Gaigalas

  • Usuários
  • 315 posts
  • Sexo:Não informado
  • Localidade:Mauá - SP
  • Interesses:Desenvolvimento para Web, Web Standards, Tableless, XHTML, CSS, PHP, MySQL, JavaScript, XML

Posted 18/12/2004, 08:55

Ahmm, eu tenho uma dúvida em relação à XML...

Não sei para que serve! sei que ele estrutura dados, mas, não é melhor usar um SGDB como o MySQL do que criar um parser pra ler XML???

Ou tipo, a única vantagem é que ele é "universal", que todo mundo pode criar um parser pro gervásio e ler cross-language???
Alexandre Gomes Gaigalas
http://alexandre.gaigalas.net

#4 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 18/12/2004, 14:47

Se sua tarefa é armazenar dados, nada mais interessante do que um SGDB®.

A objetivo do XML é descrever dados. O que é um campo para você? Veja um exemplo:

<futebol>
  <local>Campo</local>
</futebol>


<vegetações>
  <brasil tipo="predominante">Campo</brasil>
</tabela


É só um exemplo. Ao meu parecer, o ponto-chave do XML está mesmo na característica que você citou: "Cross-platform".

Eu me esforço em trabalhar com XML, pois aliado a XSLT e XSL-FO, além de derivar RSS e XHTML, o XML terá (assim espero) um grande futuro.
Klaus Paiva
Conheça também: Taperás

#5 direisc

direisc

    Normal

  • Usuários
  • 90 posts
  • Sexo:Não informado

Posted 22/01/2005, 01:16

tem tambem o fato de aplicacoes dinamicas em flash aceitar um banco como xml o q é bem mais facil do q concatenar strings

#6 gregorytg

gregorytg

    Mestre

  • Usuários
  • 632 posts
  • Sexo:Não informado

Posted 11/02/2005, 00:56

Uma perguntinha, Show de tuto.

"Não sabia que o XML fazia isso :D "

Mais vamos supor como eu faço para por exemplo:

Temos um HEAD LINE certo!
Ae tem abaixo: Leia Mais.

Quando a pessoa clicar, o XML fazer com que todo conteudo apareça.

Tem como fazer isso :wacko:
OBS apareça igual ao estilo que você fez ao abrir e fechar as Categorias ;)
"Porque o Senhor será a tua confiança, e guardará os teus pés de serem presos". \o/




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq