今日の罠

NodeList nl = hoge.getElementsByTagName(...

for(int i=0; i<nl.getLength(); i++) {
  Node node = nl.item(i);
  NodeList childs = node.getChildNodes();
  for(int j=0; j<nl.getLength(); j++) {
    Node n = nl.item(j);
   
    // おかしい、nの内容が期待してたのと違う……
  }
}

どんなヘマをしたか手を取るようにわかりますな。内側のスコープに同名の変数を許さないJavaの仕様ってテンポラリ変数が大量に必要なとき面倒です。しかし、引っかかるほうがマヌケなのは言うまでもありません。

この程度のミスに気づくのに時間がかかったのが悲しい。内側のブロック見てるだけじゃ普通にNodeList使ってるようにしか見えないんだもの。思い込みは恐ろしいですな。(デバッガ使うまでもなくここが悪いことは分かっていて、その上でソースを眺めててもしばらく気づかないとは)