在java中解析xml文档

时间:2011-04-02 12:45:51

标签: java xml

我正在尝试从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)方法中的索引值而抛出异常。我怎么知道集合中的项目索引?我有类似的程序解析XML文档,它抛出异常(NullPO)但仍然运行因为我捕获异常。我试图在这里做同样的事情,但程序不起作用,终止,虽然我抓住了Exception。 如何为item()方法提取正确的索引? 干杯

1 个答案:

答案 0 :(得分:4)

getChildNodes().item(0)

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

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


另外,您可能希望查看XPath API以从DOM树中提取数据。