Xml para Banco de dados

3 respostas
JPinhead

Olá pessoal…

na minha aplicação tenho um job que deve carregar vários xml, extrair o valor das tags e inserir em uma tabela do banco de dados…

Pelo (pouco) q sei posso usar DOM ou SAX para fazer isso (certo?:shock:), para este caso, qual seria melhor?

valeu

3 Respostas

abella

Cara, temos fatores que nos levam a usar ou um ou outro, porém vejo que muitas pessoas recorrem ao JDom pela sua faclidade.

Você pode tirar sua própria conclusão ao visitar o site:
http://www.oracle.com/technology/oramag/oracle/03-sep/o53devxml.html

paulovittor23

Sugestão ?

use XStream ! já usei DOM e mais alguns outros, todos funcionaram perfeitamente, mas achei o XStream além de bem simples de usar muito rápido.
Nunca tinha usado XStream, mas vi uma apresentação do Guilherme Silveira no último Just Java e fiquei bem impressionado com a facilidade que fica trabalhar com XML, muito legal. 8)

http://xstream.codehaus.org/

[]s

robertsonmatos

Eu estou com o mesmo problema… tentei usar o codigo a seguir so que nao deu certo

&lt?

$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 =&gt $value )
{
$h++;
$sql.= rawurldecode(trim(addslashes($value)));
if($i-1&gt$h) $sql.= “’, '”;
if($i&lt=$h) $sql.= “’)”;
}
$sql=trim($sql);
echo $sql;
}

//LIBERA O ANALISADOR XML
xml_parser_free($parser);

?&gt

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!

Criado 27 de março de 2007
Ultima resposta 4 de jul. de 2007
Respostas 3
Participantes 4