我正在尝试从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()方法提取正确的索引? 干杯
答案 0 :(得分:4)
getChildNodes().item(0)
getChildNodes()
返回NodeList
;使用此值并检查其length是否大于零。
NullPointerException
表示编程错误,不应该被捕获。
另外,您可能希望查看XPath API以从DOM树中提取数据。