我根据本页的教程编写了一个代码,用于从XML文件中的数组列表中编写所有电影here
以下是存储库中编写的代码:
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();
代码在程序的最后(因此&#34; Bye Bye&#34;)。我希望程序仅在保存更改后关闭。我试过用&#34; NULL&#34;来调试它。 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 :(得分:0)
似乎存储库为null, 你首先初始化了存储库吗?
Repository repository = new Repository();
repository.writeMoviesToXML();
你也可以使方法writeMoviesToXML静态并指向类。
Repository.writeMoviesToXML();