解析XML DOM文件

问题描述:

我试图做一个简单的DOM作者与读者在内部存储解析XML DOM文件

这是代码

protected void write_xml_file(String file_name) { 
    //if (file_name == null) file_name = "spells.xml"; 
    FileOutputStream fos; 
    try { 
     fos = openFileOutput(file_name, Context.MODE_APPEND); 
     XmlSerializer serializer = Xml.newSerializer(); 
     serializer.setOutput(fos, "UTF-8"); 
     serializer.startDocument(null, Boolean.valueOf(true)); 
     serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 
     serializer.startTag(null, "spells"); 
     for (int j = 0; j < 3; j++) { 
      serializer.startTag(null, "spell"); 
      serializer.text("a" + j); 
      serializer.endTag(null, "spell"); 
     } 
     serializer.endDocument(); 
     serializer.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 

protected void read_xml_file(String file_name) { 
    try { 
     File fXmlFile = new File(file_name); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = null; 
     dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 
     NodeList nList = doc.getElementsByTagName("spells"); 


     for (int temp = 0; temp < nList.getLength(); temp++) { 

      Node nNode = nList.item(temp); 

      //System.out.println("\nCurrent Element :" + nNode.getNodeName()); 

      if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

       Element eElement = (Element) nNode; 

       //System.out.println("spell id : " + eElement.getAttribute("id")); 
       //System.out.println("name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); 
       //System.out.println("description : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); 
       //System.out.println("school : " + eElement.getElementsByTagName("lastname").item(0).getTextContent()); 

      } 
     } 


     } catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

为写没问题,该文件被正确地写道:

当我尝试阅读我有一个错误:未找到文件

有人可以帮助我吗?

感谢

莫罗

储存时,您将可以存储在内部文件目录,撷取你只是给刚名

为例,其在数据写入/数据/ [包名称] /文件/ [文件名] ,但您尝试从[文件名]检索。的

因此,而不是直接从文件名获得,而读取XML文件,你可以尝试这样的,

File fXmlFile = new File(context.getFilesDir() + File.separator + file_name); 

Note: you can get getFilesDir() from Context, so try to send context in parameter.