Java / Android - 读取、操作 XML 文件并将其保存到内部存储
Posted
技术标签:
【中文标题】Java / Android - 读取、操作 XML 文件并将其保存到内部存储【英文标题】:Java / Android - Read, Manipulate and save XML file to internal Storage 【发布时间】:2015-08-19 23:11:12 【问题描述】:我正在开发一个 android 应用程序,它将利用一个文件系统,其中数据将存储在 xml - 文件中..
我成功读取了相应的文件并更改了节点(值已更改 - 如果在调试器中查看)但我本地保存的文件没有更改..
过程: 1.读取/打开本地文件//完成 2.更改DOM节点//完成 3. 在我的本地文件中保存更改
到目前为止,我知道在遵循一些教程和其他代码 sn-ps 之后我将不得不使用 TransformerFactory 更改仍未保存到我的文件中..
谁能告诉我我做错了什么?
我的代码:
try
File path = a.getFilesDir();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(path.getPath() + "/" + FILENAME_PERMISSIONS);
NodeList myCourses = doc.getElementsByTagName(NODE_COURSE);
for (int i = 0; i < myCourses.getLength(); i++)
Node course = myCourses.item(i);
Element e = (Element)myCourses.item(i);
Node myPermission = course.getFirstChild();
String name = e.getAttribute(ATTR_NAME);
switch (name)
case FLAG_CrossCult:
myPermission.setTextContent(boolToString(crossCult));
break;
case FLAG_KAIROS:
myPermission.setTextContent(boolToString(kairos));
break;
case FLAG_UnfinStory:
myPermission.setTextContent(boolToString(unfinStory));
break;
case FLAG_EmpToInf:
myPermission.setTextContent(boolToString(empToInf));
break;
case FLAG_YouthKairos:
myPermission.setTextContent(boolToString(youthKairos));
break;
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult streamResult = new StreamResult(new File(path.getPath() + "/" + FILENAME_PERMISSIONS));
transformer.transform(source,streamResult);
catch (ParserConfigurationException e)
catch (SAXException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
catch(TransformerConfigurationException e)
e.printStackTrace();
catch (TransformerException e)
e.printStackTrace();
【问题讨论】:
在代码的哪一部分你保存了新文件? 变压器变压器 = TransformerFactory.newInstance().newTransformer(); DOMSource 源 = 新 DOMSource(doc); StreamResult streamResult = new StreamResult(new File(path.getPath() + "/" + FILENAME_PERMISSIONS)); transformer.transform(source,streamResult); 首先,在您的 AndroidManifest.xml 中定义了权限:我发现了问题...
代码几乎是正确的。需要进行 2 处更改:
1:需要使用“new File()”
String myPath = path.getPath() + "/" + FILENAME_PERMISSIONS;
Document doc = docBuilder.parse(new File(myPath));
2:我写错了节点
//Node myPermission = course.getFirstChild();
//is now:
NodeList permissionList = e.getElementsByTagName(NODE_PERMISSION);
Node myPermission = permissionList.item(0);
我会把问题留在这里,以防有人需要这样做..
【讨论】:
以上是关于Java / Android - 读取、操作 XML 文件并将其保存到内部存储的主要内容,如果未能解决你的问题,请参考以下文章