我有以下代码例外
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)
。
感谢您分享可能帮助解决该问题的任何想法。
答案 0 :(得分:0)
仅当输入未失败解析时才进行列表初始化。列表初始化时是否出现任何堆栈跟踪信息?如果是这样,则列表保留为空。为避免此问题,请在访问列表之前检查该列表是否为空。