Ir para conteúdo

Php - Simplexml.


Rikezenho

Posts Recomendados

Bom, neste tutorial vou ensinar vocês a usar o simpleXML, uma extensão exclusiva do PHP5.

 

Portanto, se você não tem PHP5, não tem problema.

Eu disponibilizarei aqui o download de um WebServer com suporte a PHP5.

 

APPServer: http://prdownloads.sourceforge.net/appserv....8.exe?download

Para instalar é simples. Quando perguntar o domínio que você usará, coloque localdomain, e o e-mail coloque qualquer um. Não precisa ser real. Ao ser instalado ele será iniciado junto ao Windows, sem você ver, mas inicia.

Não mude mais nada além dessas coisas que eu falei, mas você pode mudar o diretório aonde vai ser instalado também.

Para acessar sua página não precisa nada de ":8090", é só seu ip mesmo.

 

Vamos começar então.

Primeiramente, o simpleXML é uma extensão que permite editar e pegar valores de um arquivo XML, facilmente, sem precisar usar explodes e mais explodes.

 

Vou dar um exemplo simples.

Primeiro, crie um arquivo XML, de nome test.xml com os seguintes textos:

<?xml version='1.0' standalone='yes'?>
<movies>
<movie>
 <title>PHP: Behind the Parser</title>
 <characters>
  <character>
  <name>Ms. Coder</name>
  <actor>Onlivia Actora</actor>
  </character>
  <character>
  <name>Mr. Coder</name>
  <actor>El ActÓr</actor>
  </character>
 </characters>
 <plot>
Uau, vc conseguiu pegar esse texto.
 </plot>
 <rating type="thumbs">7</rating>
 <rating type="stars">5</rating>
</movie>
</movies>

 

E agora na página PHP você fará o seguinte:

if (file_exists('test.xml')) {
  $xml = simplexml_load_file('test.xml');

echo $xml->movie[0]->title;
}else{
  exit('Falha ao tentar abrir test.xml.');
}

Teste a página.

Legal, ele imprimiu o valor de "<title>PHP: Behind the Parser</title>", não é?

Poisé, essa foi uma demonstração do que ele faz.

 

Agora... Vamos pensar:

Como eu vou pegar o valor dos nomes e atores?

 

É mais complicadinho, mas nada mais do que umas palavras a mais. Observe:

if (file_exists('test.xml')) {
  $xml = simplexml_load_file('test.xml');

echo $xml->movie[0]->characters->character[0]->name;
}else{
  exit('Falha ao tentar abrir test.xml.');
}

 

Teste a página. O que ele imprimiu? "Ms. Coder"? Certo!! É isso mesmo!

Observe que, para se referir a tal cláusula de mesmo nome no arquivo, usa-se o índice([0]).

Se existisse mais de uma chave chamada movie, para me referir à segunda chave movie eu teria que trocar "movie[0]" por "movie[1]".

Com character é a mesma coisa. Se você quiser pegar o valor de "<actor>El ActÓr</actor>" você teria que usar:

if (file_exists('test.xml')) {
  $xml = simplexml_load_file('test.xml');

echo $xml->movie[0]->characters->character[1]->actor;
}else{
  exit('Falha ao tentar abrir test.xml.');
}

 

Teste a página, e verá que exibiu "El ActÓr".

Maravilha né?

E agora? É só isso? Calma, que ainda tem mais.

Veja as tags do final do XML:

  <rating type="thumbs">7</rating>
 <rating type="stars">5</rating>

 

Humm, agora fedeu, né?

Não se preocupe, tem como pegar o type e o número.

É assim, primeiro crie variáveis para representar cada rating:

$rat = $xml->movie[0]->rating[0];
$rat2 = $xml->movie[0]->rating[1];

 

Depois, para exibir os números:

echo $rat;
echo $rat2;

 

Mas e aí? Como exibo o type? Assim:

echo $rat['type'];
echo $rat2['type'];

 

Teste os dois códigos juntos.

O primeiro imprimirá 7 e 5, e o segundo imprimirá thumbs e stars.

 

Pronto, é isso.

Simples não? E muito mais fácil que explode. :)

 

Concluímos então que explode é coisa do passado xD

 

Créditos: PHP.NET

 

Flwwww!

Editado por Rikezenho
Link para o comentário
Compartilhar em outros sites

Lembrando que esta função é presente no PHP5, por isso, no Easy-PHP vêm incluso o PHP4, por isso, a razão de certos sites não funcionarem no mesmo.

 

Estes sites "para Easy-PHP" usam explodes, fazendo com que não funcione para certas versões.

Para quem tiver interesse em funções pareçidas, procurem no manual por preg_match e preg_match_all.

 

 

Ótimo tutorial.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...