2016-03-26 85 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部分,他還初始化了控制器和存儲庫。我知道存儲庫應該在哪裏初始化,現在已經修復了。謝謝! –