Ler ficheiros XML em PHP 5

No PHP 5 o parsing de ficheiros XML foi completamente recriado de raiz. Por isso efectuar esta operação tornou-se bastante simples.

Dando o exemplo com o seguinte ficheiro XML:

<?xml version="1.0" encoding="utf-8" ?>
<posts>
   <post>
      <title>Ler ficheiros XML em PHP 5</title>
      <year>2008</year>
   </post>
   <post>
      <title>Almost there!</title>
      <year>2008</year>
   </post>
</posts>

Para efectuar a leitura deste ficheiro basta usar o seguinte código PHP:

if (!$myxml = simplxml_load_file ('posts.xml')) {
   echo 'Erro ao ler ficheiro XML';
   foreach ($myxml as $post) {
      echo 'Titulo: ' . $post->title . '<br />';
      echo 'Ano: ' . $post->year . '<br /><br />';
   }
}

Cada nó do ficheiro XML é passado para um array $post onde depois se pode aceder ao seu conteúdo normalmente.


 
 
 

2 Responses to “Ler ficheiros XML em PHP 5”

  1. Dheyson Wildny
    4. September 2008 at 14:30

    Cara legal seu post me ajudou bastante… mas quando fui fazer uns testes detectei alguns bugs… normal em qlq software, segue abaixo o código de leitura do xml com as devidas correções:

    //Se o arquivo não poder ser carregado através da função simplexml_load_file() mostra msg de erro.
    if (!$myxml = simplexml_load_file (’posts.xml’)) {
    echo ‘Erro ao ler ficheiro XML’;
    } else if ($myxml = simplexml_load_file (’posts.xml’)) {
    foreach ($myxml as $post) {
    echo ‘Titulo: ‘ . $post->title . ”;
    echo ‘Ano: ‘ . $post->year . ”;
    }
    }

    E assim fica td ok… Obrigado pelo post!!!

    Dheyson Wildny
    Analista de Sistemas - Web Master
    http://www.indiq.com.br - dheyson@indiq.com.br

  2. Dheyson Wildny
    4. September 2008 at 15:19

    Eu de novo… só pra deixar disponível aqui também, criei uma função em cima deste código para agilizar o acesso a dados do xml. Entao estou disponibilizando o código aqui.

    function lerXml ($url, $tag) { //Passa o caminho do xml (String) e o nome da amarração pai (String)
    $myxml = simplexml_load_file ($url); //Armazena o xml em um array
    if (!$myxml) { //Se não conseguir ler retorna o erro;
    echo ‘Erro ao ler ficheiro XML’;
    } else if ($myxml) {
    $i = 0;
    foreach ($myxml as $tag) { //Percorre o array em busca dos nós de amarração pai
    $vetor[$i] = $tag;
    $i++;
    }
    return $vetor; //retorna um vetor com todo conteudo do xml
    }
    }

    // Para ler você armazena o conteúdo do xml com ocorrências da tag em um array
    $posts = lerXml(’posts.xml’, ‘post’);

    //Para mostrar o conteúdo
    for ($i = 0 ; $i title.”;
    echo $posts[$i]->year.”;
    }

Leave a Reply