Eu estou com o mesmo problema… tentei usar o codigo a seguir so que nao deu certo
<?
$file = "tabelas.xml";
$feed = array();
$key = "";
$info = "";
function FuncInicial($parser, $elemento ) {
global $feed;
}
function FuncFinal($parser, $elemento) {
global $feed, $info;
$key = $elemento;
$feed[$key] = $info;
$info = ""; }
function FuncDados($parser, $dados ) {
global $info;
$info .= $dados;
//echo $dados;
}
$parser = xml_parser_create();
xml_set_element_handler($parser, "FuncInicial", "FuncFinal");
xml_set_character_data_handler($parser, "FuncDados");
$ponteiro = fopen($file, "r");
// NO LUGAR DO filesize($file) UTILIZANDO O NUMERO 1540 FICA QUASE PERFEITO
while ($dados = fread($ponteiro, filesize($file))) {
//INICIA A ANALISE DOS DADOS DO XML
xml_parse($parser, $dados);
$sql= “INSERT INTO MATERIAL VALUES (’”;
$i=count($feed);
$h=0;
foreach( $feed as $assoc_index => $value )
{
$h++;
$sql.= rawurldecode(trim(addslashes($value)));
if($i-1>$h) $sql.= “’, '”;
if($i<=$h) $sql.= “’)”;
}
$sql=trim($sql);
echo $sql;
}
//LIBERA O ANALISADOR XML
xml_parser_free($parser);
?>
Alguem tem alguma dica pra me dar?
O problema ta nesse while ($dados = fread($ponteiro, filesize($file))) {
Por que ele pegando o ultimo dado do xml
se eu trocar o filesize($file) por 1540 ele ate q lista todos … mas os dados nao conferem…
Ta muito ruim de ajeitar esse erro!