XMLファイルを再帰的に繰り返し、HashMapのHashMapにデータを取り込むコードを書いています。ハッシュマップにデータを入力できましたが、問題ないようです。ただし、このコマンドを実行すると
System.out.println(map.containsKey("Mary"));
その常に誤り。なぜそれが常にfalseを返すのか本当にわかりません。再帰コードとハッシュマップの内容も投稿しました
map.toString()
map is { Mary
={24
={established
={western
={Profile=m}}, torn-down
={western
={Profile=b}, eastern
={Profile=m}}}, 44
={established
={western
={Profile=g}, eastern
={Profile=s}}, torn-down
={western
={Profile=j}, western
={Profile=f}}}}, Martha
={24
={established
={western
={Profile=a}}, torn-down
={western
={Profile=b}, eastern
={Profile=n}}}, 44
={established
={western
={Profile=s}, eastern
={Profile=j}}, torn-down
={western
={Profile=k}, eastern
={Profile=g}}}}}
再帰コードは次のとおりです。
NodeList l = doc.getElementsByTagName("Branches");
Node n = l.item(0);
map = new HashMap();
recurse(n, map);
private void recurse(Node n, HashMap map){
if (n.hasChildNodes()){
NodeList nl = n.getChildNodes();
for(int i= 0; i< nl.getLength(); i++){
Node node = nl.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE){
if (!node.getNodeName().equals("Profile") ){
map.put(node.getFirstChild().getNodeValue(), new HashMap());
recurse(node, (HashMap)map.get(node.getFirstChild().getNodeValue()));
}
else {
map.put("Profile", node.getFirstChild().getNodeValue());
}
}
}
}
}
ありがとう!