DOMから特定のIDを検索する
doc.getElementById()をやってもnullしか帰ってこないとき、それは正しく検索できない証拠。
本来はDTDのAttributeのIDがちゃんと定義したうえで、getElementById()すれば一発なんだけど、別の方法として以下がある。
①setIdAttribute()する
前もってElementを追加とかしているならば、その時点で
Element.setIdAttribute("id",ture)
としておく。以降はdoc.getElementById()がつかえるようになる。
②力技で検索する
無理からやる方法は以下。たとえば
// Document docはparse済みDOM int idnum = 0; Stack st = new Stack(); Node root = doc.getDocumentElement(); NodeList childNodes = root.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node cn = childNodes.item(i); if (cn.getNodeName().toLowerCase().equals("g")) { if (((Element) cn).getAttribute("id") .equals("検索したいID")) { st.add((Element) cn); idnum++; } } } return st;