a dirti la verità ho risolto in maniera più semplice. Posto la soluzione per chi fosse interessato.
Io ricevo 2 stringhe, che sono il nome e il cognome che devo memorizzare. Il metodo creaPersona() mi crea il nuovo nodo persona e poi richiamo una funzione ricorsiva che scorre l'albero a partire dalla radice e crea la struttura xml, salvandola in una semplice stringa, che vado poi a stampare nel file.

codice:
DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docfactory.newDocumentBuilder();
Document d = builder.parse(application.getRealPath("/") + "rubrica.xml");
Element radice = documento.getDocumentElement();

public void creaPersona(Document d, String n, String c) {
	s2 = "";
	
	Element persona = d.createElement("persona");
	Element nome = d.createElement("nome");
	nome.appendChild(d.createTextNode(n));
	persona.appendChild(nome);
	
	Element cognome = d.createElement("cognome");
	cognome.appendChild(d.createTextNode(c));
	persona.appendChild(cognome);
	radice.appendChild(persona);
	
	runTree(radice); // funzione ricorsiva che tralascio per la sua semplicità
}

PrintStream f = new PrintStream(new FileOutputStream(application.getRealPath("/") + "rubrica.xml"));
f.print("<?xml version=\"1.0\"?>");
f.print(s2);