2011-07-06 17 views
0

xmlを解析してその内容を印刷できるコードを作成しようとしています。私はDOMパーサーを使用しています。私はxmlのルートタグの名前を得ることができますが、直接の子のタグ名を取得することはできません。これは、メソッド 'getElementsByTagName'を使用してノード名がわかっている場合に簡単に実行できます。このジレンマから脱出する方法はありますか?今私はgetElementsByTagNameの(「X」)を使用してXMLを通過できるように、私は直接の子ノードの名前を取得する方法xmlの子ノード名

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(file); 
doc.getDocumentElement().normalize(); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
doc.getDocumentElement().getNodeName() // this gets me the name of the root node. 

私のコードは次のようになります。

ありがとうございます。

答えて

3

getChildNodes()は、要素のすべての子を返します。リストには複数の要素だけが含まれているため、要素の場合は各子ノードを確認する必要があります。

NodeList nodes = doc.getDocumentElement().getChildNodes(); 
for (int i = 0; i < nodes.getLength(); i++) { 
    Node node = nodes.get(i); 
    if (node instanceof Element) { 
    Element childElement = (Element) node; 
    System.out.println("tag name: " + childElement.getTagName()); 
    } 
} 
+0

ありがとうAndreas_D。 – JavaNewbie

+3

これは変更されているかもしれませんが、そうであってはなりません:nodes.item(i) – mallardz

+0

@Andreas_D!私はNodeList APIで2つのメソッドを見つけました。 http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/NodeList.htmlを参照してください。 'nodes.get(i);'メソッドは 'NodeList'で定義されていません。 – Zeb

関連する問題