SimpleXML é mais uma das implementações feitas no PHP5 que quase ninguém conheçe, com ele é possível ler e editar arquivos XML de uma maneira muito simples.
Chega de blá blá blá vamos a um exemplo prático:
[code]
1 $arquivo = file_get_contents("http://maisregional.com.br/dolar.php");
2 $xml = simplexml_load_string($arquivo);
3
4 $dolar_compra = $xml->dolarcompra;
5 $dolar_venda = $xml->dolarvenda;
6
7 echo "Dolar Compra: R$ $dolar_compra
";
8 echo "Dolar Venda: R$ $dolar_venda";
[/code]
Aqui o XML gerado pelo Script php que fiz:
[code]
- <?xml version="1.0" encoding="UTF-8"?>
- <cotacao>
- <dolarcompra>2,1252</dolarcompra>
- <dolarvenda>2,1252</dolarvenda>
- </cotacao>
[/code]
Vamos a explicação:
Linha 1: pego XML(fiz esse script para um cliente ele pega a cotação do dolar no site do banco central e cria um xml quem quiser usar sinta-se a vontade) e coloco todo o seu conteúdo na variável $arquivo
Linha 2: aqui começa a mágica, nesta linha o simplexml transforma o xml em objeto
Linha 4: coloca o valor da tag dolarcompra na variável $dolar_compra. Explicando melhor quando o XML é carregado no SimpleXML, seu apontador já é apontado para a linha na primeira tag do xml que no caso é cotacao, então seto $xml-> que vai apontar para o cotacao do XML, e depois seto dolarcompra seu valor é salvo na variavel
Viu como é simples?
Vamos a um exemplo mais complicado:
[code]
1 $arquivo = file_get_contents("http://www.xe.com/dfs/sample-usd.xml");
2 $xml = simplexml_load_string($arquivo);
3
4 for($i=1; $xml->currency[$i] ->cname != "Brazil Reais"; $i= $i + 1);
5
6 $cotacao_real = $xml->currency[$i] ->crate;
7
8 echo "Cotação do real em relação ao dollar: $cotacao_real";
[/code]
Veja o código do XML <a href="http://www.xe.com/dfs/sample-usd.xml" target="blank">aqui</a>
Explicação:
Linha 1: pego o XML e coloco o conteúdo dele na variavel arquivo
Linha 2: o simplexml transforma o XML em objeto
Linha 4: faço um for para varrer todo o XML a até que encontre no cname "Brazil Reais"
Linha 6: com a variável i definido na linha 4 eu coloco na variavel o valor da cotação do real
Facinho não é?
Para acabar com a primeira parte deste artigo só tenho que explicar como pegar valores que estão nas tags de auto fechamento como esta <nota valor="5" /> vamos lá então
Aqui vai o XML de exemplo:
[code]
- <?xml version="1.0" encoding="UTF-8"?>
- <escola>
- <salas nome="1A">
- <aluno>
- <nome>Zehh</nome>
- <nota valor="10" />
- </aluno>
- <aluno>
- <nome>Tatiana</nome>
- <nota valor="9" />
</aluno>
- </salas>
- <salas nome="1B">
- <aluno>
- <nome>João</nome>
- <nota valor="3" />
- </aluno>
- <aluno>
- <nome>Bruna</nome>
- <nota valor="5" />
- </aluno>
- <aluno>
- <nome>Bianca</nome>
- <nota valor="8" />
- </aluno>
- </salas>
- </escola>
[/code]
Como ficaria o PHP:
[code]
1 $arquivo = file_get_contents("http://garagemdaweb.com.br/arquivo.xml");
2 $xml = simplexml_load_string($arquivo);
3
4 $nome_sala1a = $xml->salas[0]["nome"];
5 $nome_aluno2_da_sala1a = $xml->salas[0]->aluno[1]->nome;
6 $nota_aluno2_da_sala1a = $xml->salas[0]->aluno[1]->nota["valor"];
7
8 echo "Sala 1: $nome_sala1a<br>";
9 echo "Nome do aluno 2 sala 1A: $nome_aluno2_da_sala1a<br>";
10 echo "Nota do aluno 2 da sala 1A: $nota_aluno2_da_sala1a<br>";
[/code]
Explicando…
Linha 4: Setei a sala 0, por que para o XML a primeira é identificada como 0 e pagamos o nome o resultado seria 1A
Linha 5: Setei a sala 0 e peguei o valor da tag nome do segundo aluno, como para o XML começa no zero
Linha 6: Setei a sala 0 o aluno 1 e peguei o valor que estava na tag de auto fechamento nota que no caso seria 9
Viu muito fácil trabalhar com o simplexml, logo logo postarei como alterar um arquivo XML.
Dúvidas? deixe seu comentário.
[UPDATE]
SimpleXML - Trabalhando com XML e PHP - Parte 2/2
[/UPDATE]