NodeList的java.lang.NullPointerException

时间:2018-07-30 11:40:40

标签: java owl ontology nodelist subtree

我有以下代码例外

  public calculWeightdoc(OWLOntology onto, String xml) {

        for(OWLClass cls: onto.getClassesInSignature()){

        freqConcept(xml, cls);
        System.out.println("la taille de liste : "+list.getLength());

            if(list.getLength()!=0){   
                listConceptRetenus.put(cls, list.getLength());
            }

            else 
                {
                    listConceptRetenus.put(cls, 0);
                }


        }

   }

这是FreqConcept函数

    public void freqConcept(String xmldoc,OWLClass node){
        try {
            String filepath = xmldoc;
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(filepath);


             list = doc.getElementsByTagName(node.getIRI().getFragment());


        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SAXException sae) {
            sae.printStackTrace();
        }
    }

这是一个例外:

Exception in thread "main" java.lang.NullPointerException
at com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl.nextMatchingElementAfter(DeepNodeListImpl.java:199)
at com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl.item(DeepNodeListImpl.java:146)
at com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl.getLength(DeepNodeListImpl.java:117)
at com.onto.weight.document.calculWeightdoc.<init>(calculWeightdoc.java:59)
at com.onto.weight.document.Main_Class_une_seule_onto.main(Main_Class_une_seule_onto.java:70)

实际上,相同的代码对于某些本体(例如具有60个类的人)是完美的,但是对于其他具有大量类的其他本体(例如具有1173个类的Dbpedia),它不起作用,我不确定这是否是问题还是其他的东西...
例外是该函数list.getLength()中的行calculWeightdoc(OWLOntology onto, String xml)

感谢您分享可能帮助解决该问题的任何想法。

1 个答案:

答案 0 :(得分:0)

仅当输入未失败解析时才进行列表初始化。列表初始化时是否出现任何堆栈跟踪信息?如果是这样,则列表保留为空。为避免此问题,请在访问列表之前检查该列表是否为空。