2012-07-27 3 views
11

Je veux vérifier dans le stockage interne android si new.xml existe (qui sera créé par moi) alors il devrait me retourner un handle pour cela et je peux être facilement en mesure d'ajouter Si elle n'existe pas, créez-en une nouvelle et ajoutez-y des données.Créer un fichier xml et l'enregistrer dans le stockage interne android

Ma structure de fichier XML sera simple comme ceci.

<root> 
    <record>a</record> 
    <record>b</record> 
    <record>c</record> 
</root> 

Si le fichier est là, j'ajoutera seulement un nouveau record à it.but si ne pas que je vais créer un nouveau fichier et ajouter le premier enregistrement à elle. Je vais pouvoir lire ces données dans un arraylist. Un exemple avec du code serait super merci d'avance.

Répondre

13

Il est plutôt simple. cela vous aidera à:

String filename = "file.txt"; 

    FileOutputStream fos;  

    fos = openFileOutput(filename,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, "root"); 

    for(int j = 0 ; j < 3 ; j++) 
    { 

     serializer.startTag(null, "record"); 

     serializer.text(data); 

     serializer.endTag(null, "record"); 
    } 
    serializer.endDocument(); 

    serializer.flush(); 

    fos.close(); 

de collationner les données en utilisant l'analyseur DOM:

FileInputStream fis = null; 
    InputStreamReader isr = null; 

    fis = context.openFileInput(filename); 
    isr = new InputStreamReader(fis); 
    char[] inputBuffer = new char[fis.available()]; 
    isr.read(inputBuffer); 
    data = new String(inputBuffer); 
    isr.close(); 
    fis.close(); 

    /* 
    * converting the String data to XML format 
    * so that the DOM parser understand it as an XML input. 
    */ 
     InputStream is = new ByteArrayInputStream(data.getBytes("UTF-8")); 

     ArrayList<XmlData> xmlDataList = new ArrayList<XmlData>(); 

    XmlData xmlDataObj; 
    DocumentBuilderFactory dbf; 
    DocumentBuilder db; 
    NodeList items = null; 
    Document dom; 

    dbf = DocumentBuilderFactory.newInstance(); 
    db = dbf.newDocumentBuilder(); 
    dom = db.parse(is); 
    // normalize the document 
    dom.getDocumentElement().normalize(); 

    items = dom.getElementsByTagName("record"); 

    ArrayList<String> arr = new ArrayList<String>(); 

    for (int i=0;i<items.getLength();i++){ 

     Node item = items.item(i); 

     arr.add(item.getNodeValue()); 

    }    
+0

Donc il n'y a pas de serializer.endTag (null, "root"); '? –

0

Utilisez getFilesDir() pour obtenir le chemin vers lequel vous pouvez créer des fichiers. Vérifiez si le fichier existe en créant un objet fichier File newXml = new File(getFilesDir+"/new.xml"). Ensuite, vérifiez s'il existe en utilisant if(newXml.exists()).

Pour analyser les données, reportez-vous à dev docs. Comme vous pouvez le voir dans l'exemple XmlPullParser, il peut retourner une liste.

+0

comment ajouter les données au fichier existant? – Mj1992

+0

Bien vouloir faire des recherches bien avant de demander ici. Vérifiez http://stackoverflow.com/questions/5059296/how-to-append-an-xml-file-in-android –

+0

thnx pour l'aide. – Mj1992

0

Utilisez openFileOutput pour créer le fichier dans le stockage interne et getFileStreamPath pour vérifier si elles existent déjà et travailler avec eux

Pour lire les données dans un tableau juste flux de fichier ouvert et utiliser un analyseur XML approprié

+0

comment ajouter les données à un fichier existant – Mj1992

+0

Obtenir le fichier via getFileStreamPath, vérifier qu'il existe, ouvrir FileOutputStream et écrire vos données dans le flux –

Questions connexes