Leitura de arquivo txt com 80.000 linhas (registros) criando objetos para cada linha

Você consegue trabalhar com os métodos getChildren, getChildrenText e outros métodos de acesso a tags e conteúdo do XML.
Porém, para persistir uma alteração no XML, você terá de salva-lo novamente em disco.

Para gerar o XML de saída, vou lhe dar uma sugestão.
Conhece JAXB? Em três linhas você gera um XML de saída e trabalha com objetos JAVA, somente com get e setters.

Ou seja, cria uma classe que contenha uma lista de objetos, a classe principal é o “Root” do seu XML e a classe que será adicionada a lista são as tags que se repetem.
Basta usar os annotations do JAXB e ser feliz.

Edit: só para ficar claro, quando me refiro aos gets e setters, são das classes que representam o XML de saída. Para criar o XML em disco, ai vai usar método como marshal e unmarshal

Abraços.

Tente fazer desta forma pra ver se resolve:

  1. Leia todo o arquivo (popule uma Collection com todas os objetos que representam a lina);
  2. Feche o arquivo;
  3. Itere na collection e faça as validações;

Este é o xml para os erros.
Estou usando o JDOM.

<?xml version="1.0" encoding="UTF-8" ?> 
- 

Preciso excluir o nó pelo num_inscricao e inserir em outro xml.
Primeiro passo, como excluo?

[quote=andsuriano]Este é o xml para os erros.
Estou usando o JDOM.

<?xml version="1.0" encoding="UTF-8" ?> 
- <RegistrosErrados>
- <Candidato num_inscricao="9905002532">
  <cpf>370x62458</cpf> 
  <dig_cpf>67</dig_cpf> 
  <rg>00044419976</rg> 
  <dig_rg>X</dig_rg> 
  </Candidato>
  <Candidato num_inscricao="9747772535">
  <cpf>000x62458</cpf> 
  <dig_cpf>50</dig_cpf> 
  <rg>88888419976</rg> 
  <dig_rg>7</dig_rg> 
  </Candidato>
  </RegistrosErrados>

Preciso excluir o nó pelo num_inscricao e inserir em outro xml.
Primeiro passo, como excluo?[/quote]

Só não posso deixar de comentar novamente que na minha humilde opinião, o JAXB é muito mais simples e fácil.
Para a sua pergunta, use o método do JDom e remova a tag.

Algo como: element.removeChild(oldChild);. O parametro oldChild é um objeto do tip Node.
Para gerar o XML atualizado, precisa usar o Documento no qual está trabalhando e a partir dele gerar o novo XML em disco.

Abraços.

Obrigado pela dica. Caso queira utilizar o JAXB, teria que mudar muito do codigo??
Acompanhou o inicio do desenvolvimento???

[quote=andsuriano]Obrigado pela dica. Caso queira utilizar o JAXB, teria que mudar muito do codigo??
Acompanhou o inicio do desenvolvimento???[/quote]

Não. Basta criar uma classe com o annotation @XmlRootElement no inicio de sua classe e declarar cada atributo da mesma com o nome que quer gerar a tag xml.
Se preferir, podes usar a tag @XmlElement.

Exemplo:

@XmlRootElement(name = "NomeDaTagRootDoXml")
public class SuaClasse {}

Para que a tag não exista, basta fazer com o que um atributo de sua classe seja null e ela não será gerada.
Eu li e entendi que precisas gerar dois xml de saída, creio que seja mais fácil e prático que JDOM.

Mas fica a teu critério.
Abraços.

Valeu, vou pesquisar sobre o JAXB e tentar implementar…
Abraços…

sobre configurar a memória… o ideal seria criar um ShellScript para chamar o programa com as configurações que você julgar necessárias.
se for ruindows… crie uma bat.

Bom dia…
Consegui utilizar o JAXB…