2013-08-20 21 views
1

我已經搜索並在getElementsByTagName上獲得了大量的結果,當您指定標記但沒有針對我的特定問題時。想要使用getElementsByTagName()的特殊值(*)

在本文檔中,它說

參數:

標記名 - 標籤,以匹配的名稱。特殊值「*」 匹配所有標籤。對於XML,標記名參數區分大小寫, ,否則取決於 使用中標記語言的區分大小寫。

我對此的理解是,如果我將參數設置爲「設置」,它將返回帶有設置標記的所有元素。這工作正常,但是,這兩個聲明都給我錯誤,我不明白爲什麼?

NodeList nodeList = document.getElementsByTagName(*); 

NodeList nodeList = document.getElementsByTagName("*"); 

我只是不正確地理解文檔或?

第一條語句給了我一個語法錯誤,第二個給了我一個NullPointerException

public static void main(String args[]) throws Exception { 

    String path = "path"; 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    Document document = db.parse(path); 
    NodeList nodeList = document.getElementsByTagName("setting"); 
    String value = null; 
    if (nodeList.getLength() > 0 && nodeList.item(0).hasChildNodes()) { 
    for(int x=0, size= nodeList.getLength(); x<size; x++) { 
     System.out.println(nodeList.item(x).getAttributes().getNamedItem("name").getNodeValue()); 
      value = nodeList.item(x).getFirstChild().getNodeValue(); 
      System.out.println(value); 
    } 
    } 
} 

}

+2

「_give me errors_」您需要更具體。 (第一個很明顯 - 不會編譯)。 – jlordo

+0

道歉。我編輯了問題以包含更多詳細信息 – Killian

+0

Jeez,現在我看起來很愚蠢 - 我刪除了我的答案。哪一行是NullPointerException? –

回答

0

您正在測試的第一個元素有孩子,但在循環內的代碼假定所有元素有孩子。你需要在循環內測試它。