将修改后的xml保存到Android内部存储

时间:2017-04-28 13:04:27

标签: java android xml nullpointerexception savechanges

我在位于/data/data.my.package.app/files/file.xml的现有xml文件中添加了节点,我只想保存文件,但我没有找到。

我在另一篇文章中尝试过这个功能:

private void save(Document newDoc) throws Exception{
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    StreamResult result = new StreamResult(new File(context.getFilesDir().getAbsolutePath() + "/file.xml"));
    Source source = new DOMSource(newDoc);
    transformer.transform(source, result);
}

但我在tranformer.transform()上得到一个空指针异常...这就是我初始化我的文档文件的方式。

FileInputStream is = new FileInputStream(context.getFilesDir().getAbsolutePath() + "/file.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);

非常感谢你的帮助 A.D

1 个答案:

答案 0 :(得分:1)

文件不能为新文件。 必须已经存在:

StreamResult result = 
     new StreamResult(new File(context.getFilesDir().getAbsolutePath() +   "/file.xml"));

对我来说这项工作:

//save the doc as string  in a text file with the same name (extension   .xml)
save(this, body, dir, FILENAME_XML);

//apply the transformer
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory_p.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(
    new File(dir+File.separator+FILENAME_XML));
transformer.transform(source, result);

文件xml已生成。