Codice:
private Node getChildNode(Node node, String nodeName) {
NodeList childNodes = node.getChildNodes();
for ( int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
if ( childNode.getNodeName().equals(nodeName) )
return childNode;
}
return null;
}
Perfetto... come vedi in getChildNode() il chiamante passa un oggetto Node al cui interno cercare un Nodo "figlio" il cui nome corrisponda a quello cercato, cioè il parametro "nodeName".
Il Nodo passato come parametro potrebbe contenere zero o più Nodi "figli"...
la lista di tutti i "nodi figli" contenuti in un dato nodo viene ottenuta così:
Codice:
NodeList childNodes = node.getChildNodes();
Ora in "childNodes" c'è la lista di tutti i nodi figlio di "node".
Però il resto del metodo si limita a prendere un "nodo figlio" dalla lista, controllare se il suo nome è uguale a quello voluto ("nodeName"), quindi tornare quel Nodo in caso affermativo, altrimenti proseguire l'iterazione prendendo il prossimo "nodo figlio" e così via, finchè non l'ha trovato o non ha raggiunto la fine della lista.
Chiaro che appena trova il primo che corrisponde, il metodo torna subito.
Quindi nel tuo codice, non devi utilizzare getChildNode() ma devi utilizzare un metodo che ti personalizzi tu, e che, passato in ingresso un Nodo e una String ti trovi, nel nodo padre
tutti i nodi figlio con quel nome.
Codice:
public NodeList getAllChildNodes(Node parentNode, String childsName) {
// trova tutti i nodi figlio che hanno il nome == childsName
}
Nota: se sai come istanziare una NodeList vuota e la sua interfaccia pubblica ti permette di popolarla puoi usare quella come tipo di ritorno del metodo.
@EDIT:
Ah, prima però sarebbe bene se tu guardassi la classe Node per vedere se già c'è un metodo che fa questo lavoro...