2011-07-06 96 views
0

我想寫一段代碼,可以解析任何xml並打印其內容。我正在使用DOM解析器。我能夠得到xml根標籤的名稱,但不能獲得直接子標籤的名稱。如果通過使用方法'getElementsByTagName'已知節點名稱,則可以輕鬆完成此操作。有沒有辦法擺脫這種困境?在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. 

現在,我怎麼能得到直接子節點的名稱,這樣我可以遍歷使用的getElementsByTagName(「X」)的XML。

在此先感謝。

回答

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中找到了兩個方法。你可以看到http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/NodeList.html。 問題在於'nodes.get(i);'方法沒有在'NodeList'中定義。 – Zeb