我试图从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树中提取数据。