Olá pessoal, 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:

  • Acesse a página de feed RSS da DevMedia 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.
  • Crie um arquivo PHP e coloque o código abaixo, alterando a variável "$link" para o link que você copiou no passo anterior.

<!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 = "//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>
Nota: 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:

    allow_url_fopen = On

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 adaptá-las.