2016-03-26 35 views
0

我写了一个代码来写,从一个数组列表的所有电影的基础上的教程从这个页面here奇怪的Java空指针异常写XML文件时

这里的XML文件是写在代码库:

public void writeMoviesToXML() 
{ 
    System.out.println("NULL"); 

    try{ 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.newDocument(); 

     Element rootElement = doc.createElement("repo"); 
     doc.appendChild(rootElement); 

     Element movie = doc.createElement("movie"); 
     rootElement.appendChild(movie); 

     for (int i=0; i<movieMap.getMovieMap().size(); i++) 
     { 
      Attr attr1 = doc.createAttribute("title"); 
      attr1.setValue(movieMap.getMovieMap().get(i).getTitle()); 
      Attr attr2 = doc.createAttribute("rentTimes"); 
      if(movieMap.getMovieMap().get(i).getRentTimes() == null) 
       System.out.println("NULL"); 
      attr2.setValue(movieMap.getMovieMap().get(i).getRentTimes().toString()); 
     } 

     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(new File("C:\\Users\\ruspauladrian\\Desktop\\Lab2_4\\movies.xml")); 
     transformer.transform(source, result); 

     StreamResult consoleResult = new StreamResult(System.out); 
     transformer.transform(source, consoleResult); 

    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

这里是在UI的代码,我得到异常:

System.out.println("Bye bye"); 
repository.writeMoviesToXML(); 

的代码是在程序结束(因此“再见”)。我希望程序在保存更改后才能关闭。我曾尝试在第一个代码部分使用“NULL”println进行调试,但它从来没有看到它,所以我不知道为什么这个代码在没有实际输入函数的情况下产生问题。

这里是在仓库中使用的进口,如果有帮助:

import dataStructures.MovieMap; 
import dataStructures.PeopleList; 
import domain.Movie; 
import org.w3c.dom.*; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import java.io.File; 
+0

你的'repository'是'null'。请在'repository.writeMoviesToXML();'附近包含堆栈跟踪和代码。 – Marvin

回答

0

好像仓库是空, 你先初始化库?

Repository repository = new Repository(); 
repository.writeMoviesToXML(); 

您还可以使writeMoviesToXML静态并指向该类的方法。

Repository.writeMoviesToXML(); 
+0

有趣。我的队友编写了UI部分,他还初始化了控制器和存储库。我知道存储库应该在哪里初始化,现在已经修复了。谢谢! –