Ler XML Desconhecido

11 respostas
crpablo

Fala ae galera…

To com uma dúvida…

Tem como ler um XML sem conhecer a estrutura dele?

Ou melhor… tem como identificar a estrutura de um XML com java?

A idéia é ler um XML gigante e transformar em objetos e persistir isso…

Abraço

11 Respostas

rsakurai

Mas como você pretende converter o XML em Objeto se vc não conhece a estrutura?

crpablo

É isso que eu quero saber =D

rsakurai

Mas isso é fácil:

Le o arquivo XML para conhecer a estrutura e cria uma classe e coloca atributos e métodos dinamicamente via reflection.
Depois lê novamente o XML para criar uma lista com os objetos carregados dinamicamente.

To brincando, eu pelo menos nunca precisei fazer isso, sempre tive acesso a estrutura do XML.

crpablo

Até tenho acesso a estrutura…

Mas o problema é que ela tem 53 páginas… só o ddt… =S

T

Você só tem o DTD ou tem o XSD? Se tiver o XSD você pode converter o XSD para uma classe Java usando JAXB ( usando o utilitário xjc que vem junto com o JDK 6.0).

crpablo

Infelizmente só o DTD… :frowning:

T

Talvez o Altova ou o Eclipse tenham algum recurso que possibilite criar uma classe Java a partir de um DTD.

O Websphere (WSAD) tem algo parecido com o que você precisaria:

http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/index.jsp?topic=/com.ibm.etools.dtdeditor.doc/topics/tgenbens.html

crpablo

thingol:
Talvez o Altova ou o Eclipse tenham algum recurso que possibilite criar uma classe Java a partir de um DTD.

O Websphere (WSAD) tem algo parecido com o que você precisaria:

http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/index.jsp?topic=/com.ibm.etools.dtdeditor.doc/topics/tgenbens.html

Blz cara…

Valeu…

Vou dar uma olhada…

E

**Crie um objeto “Document” com esse xml… (Objeto Dom… bla bla bla…)

**Armazene seus elementos desse “doc” em um objeto “Element”

Element elem = doc.getDocumentElement();

** Identifique o nó pai

String noPai = elem.getTagName();

** Crie uma lista de “nodes”

NodeList nlnv = elem.getElementsByTagName( noPai );

** Brinque com essa lista, que refletirá cada nó filho, neto etc

for(int i=0; i<nlnv.getLength(); i++) {
				 XXX = (XXX)nlnv.item(0);
			 }

Acho que é por aí…

:wink:

renzonuccitelli

Bom, se o arquivo for realmente grande, aí vc pode ter problema com estouro de memória se usar o DOM. Então recomendo o JColtrane. Tem um artigo sobre ele na MundoJava desse mês. Usando ele vc poderia selecionar apenas as informações q te interessam e fazer a persistência…

E

Boa. Vou testar tb. Valeu!

Criado 9 de junho de 2009
Ultima resposta 16 de jun. de 2009
Respostas 11
Participantes 5