Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tainã Lisboa

Leitura de Arquivos XML com php

Recommended Posts

Boa noite estou tentando ler alguns arquivos xml em php, porem os arquivos xml são externos, vou postar os códigos.

 

Código php

 

<?php
// diretório onde estão os arquivos
$dir = "F:\\xxx1\\xxx2\\xxx3\\Rank";
$xml = simplexml_load_file("$dir")
$max = 10; // $max e o numero de noticias q vc quer exibir
$cont = 0; // limita a noticias
// *.xml são os formatos de arquivos a serem alterados
foreach (glob("$dir/*.xml") as $arquivo) {
$p1 = explode("/", $arquivo);
$p2 = explode(".", $p1[1]);
if($cont < $max){
foreach($arquivo->Tudo as $Tudo)
{
echo $Tudo->cod;
echo $Tudo->Nome;
echo $Tudo->Level;
echo $Tudo->Gold;
echo $Tudo->Classe;
echo "<br>";
}
}
$cont++;
}
?>

 

Código xml

 

<Tudo><Nome>testa-rank</Nome>
<Level>157</Level>
<Gold>14532512</Gold>
<Classe>2</Classe></Tudo>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arrumei aqui e agora so ta esse erro.

 

Warning: simplexml_load_file() [<a href='function.simplexml-load-file'>function.simplexml-load-file</a>]: I/O warning : failed to load external entity "file:///F:/RealseUltimateDestiny/TMSRV%0Dun/Rank" in C:\Program Files (x86)\VertrigoServ\www\Exemplos\Ex4.php on line 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alternativa 1 :seta: habilitar o allow_url_fopen no php.ini

 

Alternativa 2 :seta: utilizar cURL :seta: http://forum.imasters.com.br/topic/494166-erro-na-gerao-de-um-arquivo-xml/#entry1965026

Já esta On.

 

Assim, eu quero chamar todos os arquivos xml gerado na pasta Rank que fica no diretório ("F:\\xxx1\\xxx2\\xxx3\\Rank"), e mostrar o conteúdo de cada um deles um em baixo do outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que fica difícil assim, então dei uma pesquisada acho que é possível importa os dados xml para um banco de dados.

 

Tabela "Ranking"

 

 

CREATE TABLE IF NOT EXISTS `ranking` (
`level` varchar(4) NOT NULL,
`Nome` varchar(255) NOT NULL,
`Gold` varchar(255) NOT NULL,
`Classe` varchar(15) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

Codigo php

 

<?php
/* Conectar com o banco de dados da aplicação */
include "config.php";// inclui o arquivo conf.php
$con = mysql_connect($host,$user,$pass) or die ("Não foi possível a conexão com o servidor de banco de dados");// ciar uma conexao com o banco de dados
mysql_select_db($dbname) or die ("Não foi possível encontrar o banco de dados especificado");
$Dir = 'F://RealseUltimateDestiny//TMSRV//run//Rank';
$xml = simplexml_load_file('$Dir'); /* Lê o arquivo XML e recebe um objeto com as informações */
/* Percorre o objeto e salva as informações no banco de dados */
$x = 0;
foreach ($xml as $Ranking){
mysql_query("INSERT INTO Ranking(Level, Nome, Gold, Classe) VALUES ('$Ranking->Level', '$Ranking->Nome', '$Ranking->Gold', '$Ranking->Classe')");
if(mysql_affected_rows() != -1){
$x++;
}
}
echo "$x Dados importados com sucesso!";
?>

 

Config.php

 

 

<?php
$host = "localhost"; //Host onde a página se encontra
$dbname = "ranking"; //Nome do banco de dados q armazena os dados
$user = "root"; //Nome do usuário q tem acesso ao banco de dados
$pass = ""; //Senha do usuário q tem acesso ao banco de dados
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tbm acho que é melhor, mas sugiro que substitua o mysql por mysqli, na próxima versão do PHP mysql estará obsoleto

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

tbm acho que é melhor, mas sugiro que substitua o mysql por mysqli, na próxima versão do PHP mysql estará obsoleto

O problema que tenho aqui agora é que ele não chama nenhum arquivo xml do diretório que está ali.

Compartilhar este post


Link para o post
Compartilhar em outros sites
$Dir = 'F://RealseUltimateDestiny//TMSRV//run//Rank';

Esse caminho esta correto?

 

Qual é a extensão final do arquivo é .xml, .xml.gz, .gz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$Dir = 'F://RealseUltimateDestiny//TMSRV//run//Rank';

Esse caminho esta correto?

 

Qual é a extensão final do arquivo é .xml, .xml.gz, .gz?

A extensão final dos arquivos estão com .xml

 

 

errokm.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
$Dir = 'F://RealseUltimateDestiny//TMSRV//run//Rank';
$xml = simplexml_load_file('$Dir'); /* Lê o arquivo XML e recebe um objeto com as informações */

Mas você declarou qual a extensão final do arquivo?

 

$Dir = 'F://RealseUltimateDestiny//TMSRV//run//Rank';
$xml = simplexml_load_file($Dir . '.xml'); /* Lê o arquivo XML e recebe um objeto com as informações */

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu dei uma modificada, como faço agora pra ele abrir todos os xml que estão na pasta e mandar pra BD que eu fiz.

 

 

o php que recebe os dados da BD estão assim

 

 

 

<?php
include ("conectar.php");
// Colocando o Início da tabela
?><body bgcolor="#000000" text="#FF9933" link="#FF9933">
<p>Ranking - Confira aqui os 10 Players mais fortes do server!</p>
<table width="362" height="86" border="1" cellspacing="10">
<tr>
<td width="170" height="24"><b>Classe</b></td>
<td width="204"><b>Nick</b></td>
<td width="204"><b>Level</b></td>
</tr>
<?php
// Fazendo uma consulta SQL e retornando os resultados em uma tabela HTML
$query = "SELECT `Nome`,`Level` ,`Classe` FROM ranking ORDER BY `Level` DESC LIMIT 10";
$resultado = mysql_query($query) or die(mysql_error());
while ($linha = mysql_fetch_array($resultado)) {
?>
<tr>
<td> <?php
if($linha['Classe'] == 0){
echo '<img src="http://imageshack.us/a/img705/4307/41145501.gif" alt="" class="img-border">';
} else if($linha['Classe'] == 1){
echo '<img src="http://imageshack.us/a/img690/8054/15060043.gif" alt="" class="img-border">';
}else if($linha['Classe'] == 2){
echo '<img src="http://imageshack.us/a/img842/1372/55905850.gif" alt="" class="img-border">';
} else if($linha['Classe'] == 3){
echo '<img src="http://imageshack.us/a/img839/9764/20787621.gif" alt="" class="img-border">';
} ?></td>
<td> <?php echo $linha['Nome']; ?></td>
<td> <?php echo $linha['Level']; ?></td>
</tr>
<?php
}
$query2 = "SELECT COUNT(*) as user FROM ranking";
$resultado2 = mysql_query($query2) or die(mysql_error());
while ($linha2 = mysql_fetch_array($resultado2)) {
?>
</table>
<p>Total de Contas: <?php echo $linha2['user']; ?></p>
<p>By oxablod.<br>
Ultimate Destiny 7.53
</p>
<?php
}
?>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria basicamente informar o caminho para os arquivos .xml

<?php

$path  = 'path to files';
$files = glob( sprintf( '%s*.xml', $path ) );

foreach( $files as $file )
{
    // code here
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.