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.


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
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.”;
}