Cómo obtener childnodes usando DOM en Java

Tengo este XML.

 <employees>
  <employee tag="FT" name="a">
     <password tag="1"/>
     <password tag="2"/>
</employee>
<employee tag="PT" name="b">
     <password tag="3"/>
     <password tag="4"/>
</employee>
</employees>

Estoy tratando de obtener los nodos secundarios de cada empleado y poner el valor de etiqueta de los nodos secundarios, es decir, el valor de la etiqueta de contraseña en una lista.

nl = doc.getElementsByTagName("employee");

for(int i=0;i<nl.getLength();i++){
 NamedNodeMap nnm = nl.item(i).getAttributes(); 
 NodeList children = nl.item(i).getChildNodes();
 passwordList = new ArrayList<String>();
 for(int j=0; j<children.getLength();j++){
   NamedNodeMap n = children.item(j).getAttributes();
   passwordTagAttr=(Attr) n.getNamedItem("tag");
   passwordTag=stopTagAttr.getValue();  
   passwordList.add(passwordTag);                   
   }
}

Estoy obteniendo valor de children = 4 cuando depuro. Pero debería conseguirlo 2 para cada bucle. Por favor, ayuda.

Respuestas a la pregunta(1)

Su respuesta a la pregunta