我试图从xml文档中检索一些数据,但是程序抛出NullPointerException。这是代码片段:

     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();


由于item(0)方法中的index值而引发异常。我怎么知道收藏品的索引?我有类似的程序解析XML文档,它会引发异常(NullPOinter),但仍会运行,因为我捕获了异常。我在这里尝试执行相同的操作,但是该程序无法运行,但终止了,尽管我捕获了Exception。
如何为item()方法提取正确的索引?
干杯

最佳答案

getChildNodes().item(0)


getChildNodes()返回NodeList;使用此值并检查其length大于零。

NullPointerException表示编程错误,不应捕获。



顺便说一句,您可能希望查看XPath API从DOM树中提取数据。

10-08 16:06