[RESOLVIDO] problemas com xml muito grande e dinamico

Ola pessoal…

estou com um probleminha aqui, vamos ver se alguem pode me ajudar.

procurei no forum, mas nada me ajudou…

Estou tentando acessar um xml, mas alguns problemas surgiram.

Primeiro, o Xml eh muito grande com muitas tags diferentes, isso complica um pouco procurar por nome da tag.
Segundo, esse xml tem varios campos, que podem vir ou não, em um determinado momento uma tag se apresenta em outro não, isso tbm impossibilita o uso do nome da tag…

Sera que existe uma forma de acessar todo o arquivo apartir de um loop e da primeira tag???
tipo eu coloco a primeira tag e ele acessa todos os filhos de todas as tags internas???

agradeço a ajuda…
Raimundo

Qual é o tamanho desse XML? Você sabe quantos bytes mais ou menos o arquivo ocupa? Sabe mais ou menos quantas linhas?

cara,

da uma olhada no XStream utilizando implementação SAX, acho que pode resolver seu problema.

t+

Vamos la…

entanglement :

o tamanho do arquivo varia de 300kb a 500kb, 5000 linhas a 7000 linhas…
mas o principal problema eh que ele eh muito dinamico…
hora aparece o campo, hora não…

alissonvla:

eu ja olhei o JStream… mas preciso sempre acessar as tags pelo nome…
ai complica muito…

Tipo, eu precisava que fosse quase que linha a linha do arquivo, tipo, leu uma linha, se for abertura de tag, faça “isto”, se for dados, faça “aquilo”, se for fechamento de tag faça outra coisa…

entenderam???

cara,

vc vai possuir uma estrutura de classe java que vai representar seu XML e vc pode acessar os tag atraves das propriedades de suas classes.

t+

alissonvla:

eu ja fiz isso…

através do xsd que modela o xml eu gerei todas as classes java… são “só” 139 classes…

uma dentro da outra, em alguns pontos elas repentem, em outros tem herança pra acrescentar atributos…

eu preciso acessar todos os atributos do xml, para gerar um hash do seu conteudo… apenas dos atributos, não das tags…

acessar isso campo a campo eh complicado…

tem que haver outra forma…

ou não tem???

Esse xml tem algum dtd ou xml schema declarado? Se sim, você pode utilizar ele para saber a estrutura das tags, quais são obrigatórias, opcionais, etc.

Entendi. Você não quer saber nada do XML e sim dos atributos “em si”. Nesse caso, você pode usar o StAX:
http://docs.oracle.com/javaee/5/tutorial/doc/bnbem.html

rogeriopaguilar :

ja fiz isso… muitos campos…

são 139 classes, com heranças em varios pontos, e classes dentro de classes…

estou em busca de uma forma de fazer isso direto no xml, sem acessar as classes…

sera que existe???

opa…

entanglement…

resolvi com o link que vc me mandou… muito obrigado…

vou postar o codigo aqui, vai que alguem tbm precise…

            InputStream is = new FileInputStream(seuXML);
            XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(is);
            while (reader.hasNext()) {  
                int eventCode = reader.next();  
                switch (eventCode) {  
                    case XMLStreamConstants.START_ELEMENT :  
                        System.out.println("evento = START_ELEMENT - Localname = "+reader.getLocalName());  
                        break;  
                    case XMLStreamConstants.END_ELEMENT :  
                        System.out.println("evento = END_ELEMENT - Localname = "+reader.getLocalName());  
                        break;  
                    case XMLStreamConstants.CHARACTERS :  
                        if((!reader.getText().trim().equals(""))){  
                            System.out.println("evento = CHARACTERS - Value = "+reader.getText());  
                            break;  
                        }  
                }  
                reader.close();

blz…
valew ai toda a galera que me ajudou…
abraços

como eu faço pra colocar resolvido no topico???