BotecoDigital.info

XML nem tudo deve ir para o banco de dados


03/01/2009 Rodrigo Aramburu 1 Comentário

, , ,

Olá pessoal, hoje gostaria de compartilhar uma coisa que me ocorreu quando um cliente pediu para colocar uma simples listagem dos eventos que promovia e que fossem sumindo a medida que aconteciam. Claro como todo desenvolvedor web, a primeira coisa que eu pensei foi utilizar um banco de dados.

Examinando com um pouco mais de atenção um banco de dados nem sempre é a melhor escolha, neste caso por exemplo, as informações seriam alteradas ou adicionas muito raramente e seria eu mesmo que as faria. Então porque gastar tempo criando um sistemas de gerenciamento ou alterar dados utilizando o phpmyadmin quando um simples XML velho de guerra resolve.

Devo admitir que faz pouco tempo que comecei a utilizar XML, quando comecei a apreender PHP as formas de ler XML eram um pouco complicadas, mas com a chegada do PHP 5 isso foi resolvido com a classe SimpleXML que está muito fácil de se trabalhar.Bom vamos parar de enrrolação então e vamos a um exemplo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<evento>
     <titulo>Festa 1</titulo>
     <data>2008-05-08</data>
    <![CDATA[
        <b>Festa, festa, festa!!!</b> -
        descri&ccedil;&atilde;o da festa com tags por exemplo
    ]]>
   </texto>
</evento>
 
<evento>
     <titulo>Festa 2</titulo>
     <data>2008-06-08</data>
     <texto><![CDATA[
             <b>Festa, festa, festa!!!</b> -
             descri&ccedil;&atilde;o da festa com tags por exemplo
             ]]>
     </texto>
</evento>
 
<evento>
    <titulo>Festa 4</titulo>
    <data>2008-07-08</data>
    <texto><![CDATA[
        <b>Festa, festa, festa!!!</b> -
        descri&ccedil;&atilde;o da festa com tags por exemplo
        ]]>

PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$xml = simplexml_load_file('programacao.xml');
 
 $n_eventos = 5;
 $i = 0;
 foreach($xml-&gt;evento as $evento){
     if( $i &lt; $n_eventos and $evento-&gt;data &lt; date('Y-m-d') ){
         echo "<strong>".$evento-&gt;data." - ".$evento-&gt;titulo."</strong>";
         echo '
<div>';
         echo $evento-&gt;texto;
         echo "</div>
";
         $i++;
     }
}

Bom vamos começar, na linha 1, a função simplexml_load_file(‘programacao.xml’); cria um objeto SimpleXML apartir de um arquivo, no caso ‘programacao.xml’. Na linha 3 definimos a quantidade de eventos que será exibida e na linha 4 iniciamos o contador $i com 0.

A partir da linha 5 começa o laço foreach, como podemos ver para acessar um nó do XML é bastante simples, basta utilizar o operador -> para acessar um nó ou array de nós, sendo que cada nó pode conter alguma informação ou outros nós, sendo utilizado assim, o operador em seqüência. Como exemplo, para acessar o nó data do primeiro evento utilizariamos $xml->evento[0]->data , simples não. Também poderiamos acessar o atributo de um nó de forma semelhante, por exemplo, se nó data <data diasemana=”Segunda-feira”>2008-07-08</data> para acessá-lo utilizariamos $xml->evento[0]->data['diasemana'];, entenderam?

Na linha 6 testamos se o contador $i não atingiu o número de eventos, e se a data do evento($evento->data) ainda não passou, ou seja é maior que a data de hoje ( date(‘Y-m-d’)).

Da linha 7 à 10 concatenamos algumas tags HTML e alguns dados dos nós para dar forma a informação que desejamos exibir e logo após incrementamos o contador $i.

Quem quiser pode fazer o download do exemplo aqui

Espero que esse pequeno tutorialzinho tenha sido útil, aguardem que em breve farei mais alguns, não só PHP.

T++.c

Compartilhe:

  • Twitter
  • Rec6
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blogplay
  • LinkedIn
  • Live
  • Netvibes
  • Reddit
  • Technorati
  • PDF
  • Print
  • email

Atualmente existe 1 Comentário

Deixe um comentário








Boteco Digital | Todos os direios reservados