Lendo arquivos XML Internos e Externos com PHP

Nesse artigo irei mostrar como ler arquivos XML internos e externos com PHP.
Usaremos um arquivo XML externo do site da DevMedia.

Os passos de nosso exemplo são os seguintes:

1 – Acesse a página “http://www.devmedia.com.br/feed/” e clique no RSS que você deseja exibir as notícias. Após clicar copie o link que será exibido em uma caixa de texto logo abaixo.

2 – Crie um arquivo php e coloque o código abaixo, alterando a variavel “$link” para o link que você copiou no passo alterior.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Notícias Dev Media</title>
</head>

<body>
<h1>Notícias Dev Media</h1>
<?php

$link = "http://www.devmedia.com.br/xml/devmedia_full.xml"; //link do arquivo xml
$xml = simplexml_load_file($link) -> channel; //carrega o arquivo XML e retornando um Array

foreach($xml -> item as $item){ //faz o loop nas tag com o nome "item"
//exibe o valor das tags que estão dentro da tag "item"
//utilizamos a função "utf8_decode" para exibir os caracteres corretamente
echo "<strong>Título:</strong> ".utf8_decode($item -> title)."<br />";
echo "<strong>Link:</strong> ".utf8_decode($item -> link)."<br />";
echo "<strong>Descrição:</strong> ".utf8_decode($item -> description)."<br />";
echo "<strong>Autor:</strong> ".utf8_decode($item -> author)."<br />";
echo "<strong>Data:</strong> ".utf8_decode($item -> pubDate)."<br />";
echo "<br />";
} //fim do foreach
?>
</body>
</html>

OBSERVAÇÂO IMPORTANTE
Em seu servidor é obrigatório que a função “allow_url_fopen” esteja habilitada. Caso não esteja, crie o arquivo “php.ini” na pasta onde esteja o script do nosso exemplo e coloque o seguinte código:

[PHP]
allow_url_fopen = On

Pronto.

Lembrando que o foreach foi adaptado para ler as tags do arquivo xml do exemplo, caso as tags estiverem com nome diferente você deverá ter que adaptadas.

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Tumblr Posterous