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

simplexml_load_file()


jmamede

Pergunta

Estou a usar a função simplexml_load_file() para ler um ficheiro XML, mas este ficheiro tem caracteres latinos, o que me dá o seguinte erro ao visualizara página:

Warning: simplexml_load_file() [function.simplexml-load-file]: input conversion failed due to input error, bytes 0x90 0x43 0x54 0x52 in D:\ ......

O meu código está assim:

<?php

session_start();

$FileName = $_REQUEST["filepath"];

$AuditFile = simplexml_load_file("$FileName");

$AuditFileVersion = $AuditFile->Header->AuditFileVersion;

$CompanyID = $AuditFile->Header->CompanyID;

$TaxRegistrationNumber = $AuditFile->Header->TaxRegistrationNumber;

$TaxAccountingBasis = $AuditFile->Header->TaxAccountingBasis;

....

HELP :blush:

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Mas então o problema está no xml certo? Já que não se pode colocar acentos em nodos Xml.

Se quiser usar acentos, você pode usar html entities, ou pode colocar o conteúdo do seu xml dentro de um !CDATA.

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Luiz --
Mas então o problema está no xml certo? Já que não se pode colocar acentos em nodos Xml.

Se quiser usar acentos, você pode usar html entities, ou pode colocar o conteúdo do seu xml dentro de um !CDATA.

Abraço

Amigo estou com esse problema... com acentos dá erro... como eu faço para adicionar o conteudo do xml no !CDATA...ou utilizar o html entities neste exemplo:

<?

#carrega o arquivo XML e retornando um Array
$xml = simplexml_load_file("http://localhost/grupobrasil/xml/$nome_arquivo");

#para cada nó Usuario  atribui à variavel $usuario(obj simplexml)
foreach($xml->Item as $usuario)
{ 
    $campo1 = "$usuario->Cod_Estab";
    $campo2 = "$usuario->It_Codigo";
    $campo3 = "$usuario->Desc_item";
    $campo4 = "$usuario->UN";
    $campo5 = "$usuario->Peso_Bruto";
    $campo6 = "$usuario->Cod_Obsoleto";    
    //$valor = '\''.$campo1.'\',\''.$campo2.'\',\''.$campo3.'\'';
    $valor = '\''.$campo1.'\',\''.$campo2.'\',\''.$campo3.'\',\''.$campo4.'\',\''.$campo5.'\',\''.$campo6.'\'';
    $inserir = mysql_query("INSERT INTO itens ($registro) VALUES ($valor)") OR die (mysql_error());//Selecionando todas as subcategorias

}
}
?>

Se puder me ajudar ficarei muito grato...

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá --luiz--,

No caso para você adicionar o conteudo do xml no !CDATA, você deve inserir no próproio código XML, antes de capturar com o simplexml_load_file().

E KaKarotto, htmlentities, não há possibilidade de usar, pois trataria-se de um tratamento do código XML, antes de ir para o comando simplexml_load_file(), que no caso daí, poderia ser utilizado simplexml_load_string() no lugar de simplexml_load_file() e tratar o código com htmlentities.

<?

#carrega o arquivo XML e retornando um Array
$arquiv = file_get_contents("http://localhost/grupobrasil/xml/$nome_arquivo");
$xml = simplexml_load_string(htmlentities($arquiv));

#para cada nó Usuario  atribui à variavel $usuario(obj simplexml)
foreach($xml->Item as $usuario)
{
    $campo1 = "$usuario->Cod_Estab";
    $campo2 = "$usuario->It_Codigo";
    $campo3 = "$usuario->Desc_item";
    $campo4 = "$usuario->UN";
    $campo5 = "$usuario->Peso_Bruto";
    $campo6 = "$usuario->Cod_Obsoleto";    
    //$valor = '\''.$campo1.'\',\''.$campo2.'\',\''.$campo3.'\'';
    $valor = '\''.$campo1.'\',\''.$campo2.'\',\''.$campo3.'\',\''.$campo4.'\',\''.$campo5.'\',\''.$campo6.'\'';
    $inserir = mysql_query("INSERT INTO itens ($registro) VALUES ($valor)") OR die (mysql_error());//Selecionando todas as subcategorias

}
}
?>

Espero ter ajudado...

Editado por BEOC
Link para o comentário
Compartilhar em outros sites

  • 0

sim [e poss[ivel gravar caracteres latinos, como o ç. Para isso, basta colocar algo do tipo:

<filho xml><![data] texto com os caracteres -> </filho xml>

É mais ou menos isto.

Obs: os caracteres que estiverem contidos na função serão interpretados na consulta como caracteres brutos

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...