2011-02-07 69 views
1

我想通過從NodeList中搜索特定的節點來從解析的XML文件中提取元素。這是我用來迭代多個父母的以下代碼:Noob關於NodeLists和NodeMaps的問題

Node node; 
NodeList nodeList = document.getElementsByTagName("SomeTag"); 
for (int i = 0; i < nodeList.getLength(); i++) 
{ 
    NamedNodeMap map = nodeList.item(i).getAttributes(); 
    node = map.getNamedItem("AnotherTag") 
} 

但是,我的節點總是返回空值。在做一些調試,看來它擁有所有的值: enter image description here

我認爲它必須做的「這$ 0」提及自己的東西之前,我的價值觀,因爲如果我這樣做的一個的getLength NodeMap,它返回0.任何有關如何解決這個問題的想法?感謝每一個人!

回答

0

你被調用訪問屬性的元素,而不是它的子節點nodeList.item(i).getAttributes();

+0

我發現了一個類似於我正在做的事情的例子,他們似乎有更好的運氣:http://www.w3schools.com/Dom/tryit.asp?filename=try_dom_attributes 任何想法作爲爲什麼這有效?這裏的網頁: http://www.w3schools.com/Dom/dom_nodes_nodelist.asp – 2011-02-07 17:38:37

+0

我的猜測是你正試圖訪問: ... ...。正確?在這種情況下,您應該只使用nodeList.item(i)並檢查其名稱(以及它是否爲Element類型)。您正在訪問的屬性,即 ... ... 2011-02-07 17:41:05

0

你有可能想過使用JAXB?

您可以創建Java對象並讓JAXB加載XML文件並以這種方式遍歷樹。你甚至可以從XSD自動創建Java對象,如果你有的話。