Xml como banco de dados

Aew galera…

Estou desenvolvendo uma aplicação onde preciso informar o código do municipio, baixei em .xls a planilha com todos os códigos de municipios, são mais de 10 mil registros, eu não tenho banco para manipular, apenas dou select em um banco postgres para recolher os dados necessários.

Pensei em transformar em um arquivo xml essa planilha e trabalhar com ela para consulta do código do municipio.

Agora a duvida, eu sempre trabalhei com xml para geração e leitura de arquivos pequenos o maior foi a Nf-e, e sempre usei o DOM para gerar o arquivo e o SAX para ler os arquivos xml, mas com um arquivo que vai servir como banco de dados qual a melhor forma de fazer a consulta nesse xml? pelo SAX mesmo varrendo todos os nós?
ou existe meneira mais simples e produtiva?

Obrigado.

Olá furacao123, tem o http://xmlbeans.apache.org/ é muito Util.

Outro bastante interessante é o XStream.

link: tutorial XStream: http://www.guj.com.br/article.show.logic?id=144

Será que a melhor abordagem é mesmo utilizar o XML para armazenar esses dados?

o paulohrl levantou uma questão interessante para se analisar. Qual a melhor abordagem para carregar uma lista de dados com mais de 10 mil registros?

Boa noite Galera !

Não entendi… porque nao utilizar uma tabela no banco de dados ao invés de um XML ?

Tenho uma aplicação que usa o XStream para parsear arquivos XML de 50.000 registros, cada arquivo fica com aproximadamente 100 Mb, e funciona muito bem, mas nesse caso eu não faço pesquisas no XML, apenas leio e trato os dados que recebo, no final, servem para atualizar uma base de dados.

[]s

Exatamente este o ponto.

Será XML a melhor abordagem para armazenar esses dados?

é que eu não posso manipular o banco de dados…esse banco de dados é PostGres 7.2 de uma aplicação em delphi para controle de estoque, etc.

O cliente precisa gerar a NFe e apenas me passaram as tabelas que eu preciso dar os selects e os devidos dados para conexao, mas o problema é que na parte de códigos de municipios eu preciso popular de algum lugar e a unica maneira que eu pensei foi em armazenar num arquivo xml e fazer ele trabalhar como se fosse uma tabela de BD mas que eu vou usar apenas para consulta nao vou alterar os dados.

Operações de I/O são sempre pesados. Se o problema não é performance creio que utilizar XML é um opção boa. O ideal seria inserir a tabela no banco de dados e trabalhar com cache de segundo nível.

Fica aqui minha opinião.

abraços

Bom dia Galera !

Bom se você não pode acrescentar nada ao banco de dados então acho que pode pensar em utilizar o XML, parsear e transforma-lo em uma lista de objetos… se for realizar pesquisas seria bom utilizar uma hash, para pesquisar pela chave.

Como disse no meu caso, o XML possui 50.000 registros que são “parseados” e transformados em uma lista, no entanto eu somente preciso varrer a lista e realizar as operações apropriadas.

Um abraço.

[]s

Zeed01 voce diz ao inves de utilizar o xml jogar os dados em um Hash estatico de 10 mil registros?

Ola…

No meu caso eu transformo em um List, no momento de processar os registros a lista é quebrada em várias sublists e executada em threads.
Se você vai fazer pesquisas nessa lista, seria bom verificar qual a melhor implementação… não sou bom nisso, mas tem aquela implementação do tipo <Chave, Objeto> que poderia ser utilizada…

[]s

entendi, agora uma duvida tenho a planilha em .xls dos codigos de municipio com mais de 10 mil registros gerei um .xml no salvar como do execel mas ele gera um xml bem poluido, como eu poderia gerar um xml limpo existe alguma ferramenta pra isso?

e resolvi trabalhar com o arquivo .xml onde cada vez que eu vou gerar uma nfe nova eu rastreio no arquivo xml, ou tambem estou pensando em separar esse xml por estados ae seriam menos nós para percorrer.

opa ja encontrei a ferramenta vou ter que usar o POI da Apache, então resumindo, vou rastrear desse arquivo .xls os dados do municipio usando o POI.

muito obrigado a todos, e qualquer coisa eu posto aqui quando terminar ou se der algum problema na implementação.

valew