Java-XML NodeList.item()抛出NullPointerException

Java-XML NodeList.item()抛出NullPointerException,java,xml,sax,saxparser,Java,Xml,Sax,Saxparser,当我使用SAXParser解析Android XML布局并通过NodeList读取元素项时,我得到了NPE NodeList list = e.getChildNodes(); // e is Element for(int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if(node == null) { continue; } if(node.getNodeTy

当我使用SAXParser解析Android XML布局并通过NodeList读取元素项时,我得到了NPE

NodeList list = e.getChildNodes(); // e is Element
for(int i = 0; i < list.getLength(); i++) {
    Node node = list.item(i);
    if(node == null) {
        continue;
    }
    if(node.getNodeType() == Node.ELEMENT_NODE) {
        Element element = (Element) node;
        // process somehow it
    }
}
那为什么会这样呢?如何避免此异常并只读取元素数据

UPD: 有时NPE会在getLength()中抛出:

UPD 2: 全身

public List<DomElement> getChildNodes() {
    ArrayList<DomElement> elements = new ArrayList<DomElement>();
    NodeList list = e.getChildNodes();
    for(int i = 0; i < list.getLength(); i++) {
        Node node = list.item(i);
        if(node == null) {
            continue;
        }
        if(node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            elements.add(new DomElement(doc, element));
        }
    }
    return elements;
}
公共列表getChildNodes(){ ArrayList元素=新的ArrayList(); NodeList list=e.getChildNodes(); 对于(int i=0;i如果使用SAX解析器,在DOM对象上出现错误似乎很奇怪。假设您实际使用的是DOM解析器,并且列出的代码正在DOM树中导航,
//进程是否以某种方式处理它
代码可能会在迭代
节点列表时修改DOM树
?不,它不会改变任何东西。我有一个类是围绕元素的包装器。它为我提供了更漂亮的界面。我发送的方法实际上是读取内部DOM元素(我在第一条消息中添加了完整的代码),我有完全相同的问题。奇怪的是,当我计算Intellij调试器中抛出的完全相同的表达式时(当我捕获它并在printstacktrace上有一个断点时)它总是有效的。如果使用SAX解析器,在DOM对象上出现错误似乎很奇怪。假设您实际使用的是DOM解析器,并且列出的代码正在DOM树中导航,
//进程是否会以某种方式执行它
代码可能会在迭代
节点列表
时修改DOM树?不,它不会改变任何东西。我有一个类是围绕元素的包装器。它为我提供了更漂亮的界面。我发送的方法实际上是读取内部DOM元素(我在第一条消息中添加了完整的代码),我有完全相同的问题。奇怪的是,当我计算Intellij调试器中抛出的完全相同的表达式时(当我捕获它并在printstacktrace上有一个断点时),它总是工作的。
at com.sun.org.apache.xerces.internal.dom.ParentNode.nodeListItem(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.ParentNode.item(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.ParentNode.nodeListGetLength(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.ParentNode.getLength(Unknown Source)
public List<DomElement> getChildNodes() {
    ArrayList<DomElement> elements = new ArrayList<DomElement>();
    NodeList list = e.getChildNodes();
    for(int i = 0; i < list.getLength(); i++) {
        Node node = list.item(i);
        if(node == null) {
            continue;
        }
        if(node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            elements.add(new DomElement(doc, element));
        }
    }
    return elements;
}