Ir para conteúdo

POWERED BY:

Arquivado

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

F-gos

xml com erro

Recommended Posts

Pessoal boa tarde! estou com o seguinte problema, estou gerando um xml atraves do banco de dados e quando clico para visualiza-lo no browser ele aparece um erro. veja o link Clique aqui .

 

 

Para gerar a estrutura do xml estou utilizando como base um tutorial do imasters. segue o codigo:

 


<?
/* Conectamos ao MySQL */
$connection = mysql_connect("localhost", "user", "senha") or die ('Erro ao Conectar ao Banco de dados');

/* Selecionamos o Banco de Dados */
$db = mysql_select_db("banco") or die ("Não foi possível localizar o banco de dados");

/* Buscamos o nome, email e comentarios da tabela guestbook */
$consulta = mysql_query("SELECT id,nome_generico,nome_cientifico,aqua_min1,habitat,familia,ph_min,ph_max,temp_min,temp_max,gh_min,gh_max,manutencao,agressividade,alimentacao,caracteristicas,reproducao,foto,fonte  FROM peixes WHERE categoria LIKE '1'
ORDER BY id DESC");

/* Retorna o número de linhas do resultado */
$row=mysql_num_rows($consulta);

/* Verificamos se retornou algum resultado */
if($row>0){
   /* Manda a mensagem para o Flash */
   print "&erroMensagem=0";
   /* Começamos a criar o arquivo XML */
   $conteudo ='<?xml version="1.0" encoding="ISO-8859-1"?>

<dados> <peixes>';
   /* Para cada item retornado */
   for($i=0; $i<$row; $i++) {
  	/* Recuperamos os Nomes */
  	$nome_generico = mysql_result($consulta,$i,"nome_generico");
   $nome_cientifico = mysql_result($consulta,$i,"nome_cientifico");
  	$aqua_min1 = mysql_result($consulta,$i,"aqua_min1");
  	$habitat = mysql_result($consulta,$i,"habitat");
  	$familia = mysql_result($consulta,$i,"familia");
  	$ph_min = mysql_result($consulta,$i,"ph_min");
   $ph_max = mysql_result($consulta,$i,"ph_max");
  	$temp_min = mysql_result($consulta,$i,"temp_min");
  	$temp_max = mysql_result($consulta,$i,"temp_max");
  	$gh_min = mysql_result($consulta,$i,"gh_min");
  	$gh_max = mysql_result($consulta,$i,"gh_max");
   $manutencao = mysql_result($consulta,$i,"manutencao");
  	$agressividade = mysql_result($consulta,$i,"agressividade");
  	$alimentacao = mysql_result($consulta,$i,"alimentacao");
  	$caracteristicas = mysql_result($consulta,$i,"caracteristicas");
  	$reproducao = mysql_result($consulta,$i,"reproducao");
  	$foto = mysql_result($consulta,$i,"foto");
  	$fonte = mysql_result($consulta,$i,"fonte");
   
   
  	/* Inserimos os valores recuperados nas respectivas tags */
  	$conteudo.='<peixe fotop="'.$foto.'" foto="'.$foto.'" generico="'.$nome_generico.'" cientifico="'.$nome_cientifico.'" aquario="'.$aqua_min1.'" habitat="'.$habitat.'" familia="'.$familia.'" phmin="'.$ph_min.'" phmax="'.$ph_max.'" temp_min="'.$temp_min.'" temp_max="'.$temp_max.'" gh_min="'.$gh_min.'" gh_max="'.$gh_max.'" manutencao="'.$manutencao.'" agressividade="'.$agressividade.'" alimentacao="'.$alimentacao.'" caracteristicas="'.$caracteristicas.'" reproducao="'.$reproducao.'" fonte="'.$fonte.'"></peixe>';
   
   }
   /* Fechamos a tag guest */
   $conteudo.= '</peixes></dados>';
   /* Se existir, abrimos o arquivo guest.xml para leitura e escrita */
   /* Se não existir criamos o arquivo guest.xml */
   $ponteiro = fopen("peixes_cat0.xml", "w");
   /* Escremos o conteúdo dentro do arquivo selecionado */
   /* Codificamos para UTF8 os campos para não dar problemas com acentuação */
   fwrite($ponteiro, utf8_decode($conteudo));
   /* Fechamos o arquivo */
   fclose($ponteiro);
   /* Se não retornou nenhum resultado */
} else {
   /* Manda a mensagem de erro para o Flash */
  // print "&erro=Não existe nenhum registro no banco!&erroMensagem=1";
}

?>

Alguém pode me dizer oq esta gerando esse erro????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, o erro diz que o seu XML está mal formado. Olhando o XML gerado encontrei uma virgula, sinais e até mesmo acentuações gráficas nos nomes dos atributos, e isto é o que gera o erro.

 

Em um dos itens o atributo caracteristica se confundiu com demais atributos. acredito que a informação que veio do banco de dados tinha uma aspa que acabou fechando o atributo anterior e gerando outro incorreto.

 

Dê uma olhada em http://www.w3schools.com/xml/default.asp, revise seu código e corrija estes erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK! Snakepit vou revisar o processo. Obrigado.

 

OK! revisado e funcionando.... uma outra duvida é a seguinte.... tem como eu fazer com que esse arquivo.php que vai no banco e gera o xml faça isso sozinho a cada 5 minutos por exemplo???

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.