Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com XML


Renato Penna

Pergunta

Estou com um problema para pegar os dados do XML com o PHP. O que eu preciso é pegar cada dado do XML para depois colocar no banco de dados, mas não estou conseguindo. o XML é esse...

<?xml version="1.0" encoding="iso-8859-1" ?> 
- <sroxml>
  <versao>1.0</versao> 
  <qtd>5</qtd> 
  <TipoPesquisa>Lista de Objetos</TipoPesquisa> 
  <TipoResultado>Todos os eventos</TipoResultado> 
- <objeto>
  <numero>EC049269504BR</numero> 
- <evento>
  <tipo>LDI</tipo> 
  <status>01</status> 
  <data>07/07/2009</data> 
  <hora>08:54</hora> 
  <descricao>Aguardando retirada</descricao> 
  <local>AGC CORONEL PILAR</local> 
  <codigo>95726970</codigo> 
  <cidade>GARIBALDI</cidade> 
  <uf>RS</uf> 
  <sto>64915077</sto> 
  </evento>
- <evento>
  <tipo>LDI</tipo> 
  <status>01</status> 
  <data>07/07/2009</data> 
  <hora>08:54</hora> 
  <descricao>Aguardando retirada</descricao> 
  <local>AGC CORONEL PILAR</local> 
  <codigo>95726970</codigo> 
  <cidade>GARIBALDI</cidade> 
  <uf>RS</uf> 
  <sto>64915077</sto> 
  </evento>
 </objeto>
</sroxml>
O código PHP é esse...
/*
$meuxml = $arq;
$arquivo = file_get_contents($meuxml);
*/

$xml = simplexml_load_file($arq); // linha 42
print_r($xml);

/*
foreach ($xml->evento as $registro)
{
    echo $registro->tipo."<br />";
    echo $registro->status."<br />";
    echo $registro->descricao."<br /><br />";
}
*/

E na tela aparece... "Warning: simplexml_load_file() expects parameter 1 to be string, resource given in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\admin\sro\sro.php on line 42".

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Estou com um problema para pegar os dados do XML com o PHP. O que eu preciso é pegar cada dado do XML para depois colocar no banco de dados, mas não estou conseguindo. o XML é esse...

<?xml version="1.0" encoding="iso-8859-1" ?> 
- <sroxml>
  <versao>1.0</versao> 
  <qtd>5</qtd> 
  <TipoPesquisa>Lista de Objetos</TipoPesquisa> 
  <TipoResultado>Todos os eventos</TipoResultado> 
- <objeto>
  <numero>EC049269504BR</numero> 
- <evento>
  <tipo>LDI</tipo> 
  <status>01</status> 
  <data>07/07/2009</data> 
  <hora>08:54</hora> 
  <descricao>Aguardando retirada</descricao> 
  <local>AGC CORONEL PILAR</local> 
  <codigo>95726970</codigo> 
  <cidade>GARIBALDI</cidade> 
  <uf>RS</uf> 
  <sto>64915077</sto> 
  </evento>
- <evento>
  <tipo>LDI</tipo> 
  <status>01</status> 
  <data>07/07/2009</data> 
  <hora>08:54</hora> 
  <descricao>Aguardando retirada</descricao> 
  <local>AGC CORONEL PILAR</local> 
  <codigo>95726970</codigo> 
  <cidade>GARIBALDI</cidade> 
  <uf>RS</uf> 
  <sto>64915077</sto> 
  </evento>
</objeto>
</sroxml>
O código PHP é esse...
/*
$meuxml = $arq;
$arquivo = file_get_contents($meuxml);
*/

$xml = simplexml_load_file($arq); // linha 42
print_r($xml);

/*
foreach ($xml->evento as $registro)
{
    echo $registro->tipo."<br />";
    echo $registro->status."<br />";
    echo $registro->descricao."<br /><br />";
}
*/

E na tela aparece... "Warning: simplexml_load_file() expects parameter 1 to be string, resource given in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\admin\sro\sro.php on line 42".

$arquivo = file_get_contents($meuxml);

$xml = simplexml_load_file($arq); // linha 42

de onde vem a variavel $arq

talvez tenha o erro esteja ai voce setou a variavel arquivo mais usou a arq

utilize o comando

if (file_exists('test.xml')) {

$xml = simplexml_load_file('test.xml');

print_r($xml);

} else {

exit('arquivo inexistente test.xml.');

}

o file_exists verifica se existe o arquivo assim evita de gera erro até mais

Link para o comentário
Compartilhar em outros sites

  • 0

A variável $arq é o arquivo XML. Vou postar o código todo pra você ver...

<?php

$filename="http://websro.correios.com.br/sro_bin/sroii_xml.eventos?usuario=".$usuario."&senha=".$senha."&Tipo=".$tipo."&Resultado=".$resultado."&Objetos=".$objetos;


$file = fopen($filename,"r");

 $newfile = 'sro_'.date("Y-m-d").'.xml';
$arq= fopen($newfile,"w");

if(!$file)
{
    echo "<p>Unable to open remote file.\n";
    exit;
}
else
    echo "ARQUIVO ABERTO<br>";

while (!feof ($file))
{
    $line = fread($file,1024);
//    echo "$line<br>";
    fwrite($arq, $line);
}
fclose($arq);
echo "ARQUIVO SALVO $newfile";    
fclose($file);

/*
$meuxml = $arq;
$arquivo = file_get_contents($meuxml);
*/

$xml = simplexml_load_file($arq);
print_r($xml);

/*
foreach ($xml->evento as $registro)
{
    echo $registro->tipo."<br />";
    echo $registro->status."<br />";
    echo $registro->descricao."<br /><br />";
}
*/

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvi o problema mais ou menos. Agora ele não dá erro no print_r, mas quando eu executo o foreach ele não exibe nada na tela. Eis o código...

<?php $filename="http://websro.correios.com.br/sro_bin/sroii_xml.eventos?usuario=".$usuario."&senha=".$senha."&Tipo=".$tipo."&Resultado=".$resultado."&Objetos=".$objetos;


$file = fopen($filename,"r");

 $newfile = 'sro_'.date("Y-m-d").'.xml';
//$newfile = 'sro_2010-05-08.xml';
$arq= fopen($newfile,"w");

if(!$file)
{
    echo "<p>Unable to open remote file.\n";
    exit;
}
else
    echo "ARQUIVO ABERTO<br>";

while (!feof ($file))
{
    $line = fread($file,1024);
//    echo "$line<br>";
    fwrite($arq, $line);
}
fclose($arq);
echo "ARQUIVO SALVO $newfile";    
fclose($file);

/*
$meuxml = $arq;
$arquivo = file_get_contents($meuxml);
*/

$xml = simplexml_load_file($newfile);
//print_r($xml);


foreach ($xml->evento as $registro)
{
    echo $registro->tipo."<br />";
    echo $registro->status."<br />";
    echo $registro->descricao."<br /><br />";
}


?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...