Gravando um Document DOM

Pessoal, estou tentando utilizar o DOM para gravar um XML.

O objeto Document que eu tenho é estático, e os nodos da árvore vão sendo inseridos no documento durante a execução do programa.

Ao final da execução, eu quero gravar o documento em um arquivo, e não estou conseguindo: se tento gravar o Document.toString(), o String resultante é o nome da classe, e não o XML. Se tento gravar o elemento raiz Node.toString() o String forma o XML apenas para o nodo raiz, e não para seus filhos (as tags são inclusive abertas e fechadas).

Alguma idéia?

[]'s

Utilize um DOMSource:

DOMSource domSource = new DOMSource(document);
StreamResult sr = new StreamResult(new File("meuArquivo.xml"));
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(domSource, sr);

Rafael

Valeu Rafal, o DOMSource funcionou mais ou menos…o problema é o seguinte:

Agora estão sendo gravados dois níveis da árvore, que são gerados quando o documento é criado.

Como eu tinha dito, durante o programa, eu tenho um objeto Document que é estático e final, e os nodos de uma estrutura de árvore vão se colocando no documento recursivamente à medida em que são criados.

Usando o debug do Eclipse, eu consigo ver o documento com os nodos criados durante o programa durante a execução, mas, ao final, quando o arquivo vai ser salvo, o documento contém novamente só os dois nodos que foram criados logo quando o Document original foi criado…o que pode estar acontecendo?

Voce provavelmente esta com algum erro de logica no teu codigo… tipo, recriando o objeto, escopo de variaveis, atualizando o objeto errado… algo do estilo. Sozinho o documento nao se altera.

Rafael

Valeu Rafael, problema resolvido…

Eu me confundi no meio de várias classes e acabei resolvendo o problema simplificando a idéia - o problema era perda de referências.

[]'s

Experimente dom4j.