在Java中使用GetElementsByTagnames()时,如何检查节点是否存在?
如果我在嵌套节点中迭代,其中一个节点有时在那里,而其他节点则不在那里,那么我如何检查它以避免得到NullPointerException 例如,如果我正在做这样的事情,当它到达一个idNumber不存在的集合时,它会抛出一个NullPointerException在Java中使用GetElementsByTagnames()时,如何检查节点是否存在?,java,xml,dom,Java,Xml,Dom,如果我在嵌套节点中迭代,其中一个节点有时在那里,而其他节点则不在那里,那么我如何检查它以避免得到NullPointerException 例如,如果我正在做这样的事情,当它到达一个idNumber不存在的集合时,它会抛出一个NullPointerException <code> NodeList nl = docEle.getFirstChild().getChildNodes(); int length = nl.getLength();
<code>
NodeList nl = docEle.getFirstChild().getChildNodes();
int length = nl.getLength();
System.out.println(length);
for (int i = 0; i < length; i++) {
if (nl.item(i).getNodeType() == Node.ELEMENT_NODE) {
idNumber = el.getElementsByTagNameNS("urn:example","idNumber").item(0).getTextContent();
}
</code>
NodeList nl=docEle.getFirstChild().getChildNodes();
int length=nl.getLength();
系统输出打印长度;
for(int i=0;i
是NodeList.item()
的javadoc,它说:
节点列表中位于索引第X个位置的节点,如果不是有效索引,则为null
因此,在您的案例中似乎没有找到节点,因此,列表
为空。您可以在调用getTextContent()
方法之前添加检查,例如:
NodeList list = el.getElementsByTagNameNS("urn:example","idNumber");
if(list.getLength() > 0){
idNumber = list.item(0).getTextContent();
}