2011-04-02 106 views
0

我想從xml文檔中檢索一些數據,但程序拋出NullPointerException。這是代碼的片段:在java中解析xml文檔

 if("Success".equals(nodeValue)) 
    { 

      NodeList productList = xmlDocument.getElementsByTagName("Products").item(0).getChildNodes(); // gets all childs of Product node 
      for (int j = 0; j < productList.getLength(); j++) 
      { 
       singleProduct = xmlDocument.getElementsByTagName("Product").item(j).getChildNodes(); 

       for(int x = 0; x < singleProduct.getLength(); x++) 
       { 
        if(singleProduct.item(x).getNodeType() == Node.ELEMENT_NODE) 
        { 
        String nodeName = singleProduct.item(x).getNodeName(); 

       String value = singleProduct.item(x).getChildNodes().item(0).getNodeValue(); 
         System.err.println(x+" "+nodeName+" "+ value); 
        if ("ProductID".equals(nodeName)) 
       { 

        id.put(xx, value); 
         type.put(y, singleProduct.item(x).getChildNodes().item(1).getAttributes().getNamedItem("type").getTextContent());; 
        xx++; 
         y++; 
        } 
        } 
       } 
      } 
    } 

這部分拋出異常:

    String value = singleProduct.item(x).getChildNodes().item(0).getNodeValue(); 

拋出異常由於內部項目(0)方法指數的值。我應該如何知道收集物品的索引?我有類似的程序解析XML文檔,它會拋出異常(NullPOinter),但仍然運行,因爲我發現異常。我試圖在這裏做同樣的事情,但程序不起作用,終止,但我趕上例外。 如何爲item()方法提取正確的索引? 乾杯

回答

4
getChildNodes().item(0) 

getChildNodes()返回一個NodeList;使用此值並檢查其length是否大於零。

NullPointerException s表示編程錯誤,不應被捕獲。


另外,你可能想看看XPath API從DOM樹中提取數據。

+1

NullPointerExceptions的+1不應被捕獲。 – Daniel 2011-04-02 13:07:15

+0

我檢查了長度,它是1.什麼是其他想法? – ucas 2011-04-02 15:34:27

+0

@ucas - 問題根據代碼示例在我看來並不明顯。我可以看到一些紅旗 - 比如多次調用'xmlDocument.getElementsByTagName',但沒有看到示例文檔和最終目標,很難提供幫助。 – McDowell 2011-04-03 21:56:50