Ti ringrazio tanto Lele, non sai che rompicapo mi hai risolto!

La scelta che ho fatto di passare il vector per poi farmelo ritornare modificato è dettata dalla ricorsione della funzione. E' il modo più immediato che mi è venuto in mente per aggirare l'ostacolo, ma forse non il migliore...

Forse sono di troppe pretese, ma c'è un'altra cosa che proprio non capisco e che mi piacerebbe sottoporvi. La funzione:
codice:
private void confronta (Node node, Vector valori) {
    	switch (node.getNodeType()) {
        case Node.DOCUMENT_NODE:
        case Node.ELEMENT_NODE:
            // recurse on each child
            NodeList nodes = node.getChildNodes();
            if (nodes != null) {
                for (int i=0; i<nodes.getLength(); i++) {
                    confronta(nodes.item(i), valori);
                }
            }
            break;

        case Node.TEXT_NODE:
        case Node.CDATA_SECTION_NODE:
        	if (! node.getNodeValue().startsWith("\n") && ! node.getNodeValue().startsWith(" ")){
        		Struttura struct=new Struttura(node.getParentNode().getParentNode().getNodeName(), node.getParentNode().getNodeName(), node.getNodeValue());
        		System.out.println(valori.contains(struct));
        		
        	}
            
            break;
    	}
    	
    }
confronta i valori contenuti in un documento xml verificando che siano ammissibili (ovvero che siano contenuti nel vector "valori" che abbiamo creato prima).
Usando il metodo contains(Object) ottengo però sempre false. Ho commesso qualche errore nel codice o sbaglio ad usare la funzione?

Grazie ancora.