2012-07-27 17 views
11

voglio controllare nella memoria interna di Android se new.xml esiste (che verrà creato da me) allora dovrebbe mi restituisce un manico per esso e io possa essere facilmente in grado di aggiungere nuovi dati ad esso. Se non esiste, crearne uno nuovo e aggiungere dati ad esso.Creare file XML e salvarlo nella memoria interna Android

La struttura del mio file xml sarà semplice come questa.

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

Se il file è lì ho solo aggiungere un nuovo record a it.But se non lo fa di quanto mi creerà un nuovo file e aggiungere il primo record ad esso.

e come sarò in grado di leggere questi dati in un arraylist. Un esempio di codice sarebbe fantastico, grazie in anticipo.

risposta

13

È piuttosto semplice. questo vi aiuterà a:

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(); 

per leggere di nuovo i dati usando DOM parser:

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

Quindi non esiste 'serializer.endTag (null," root ");'? –

0

Utilizzare getFilesDir() per ottenere il percorso in cui è possibile creare file. Verifica se il file esiste creando un oggetto file File newXml = new File(getFilesDir+"/new.xml"). Quindi verificare se esiste utilizzando if(newXml.exists()).

Per analizzare i dati, vedere dev docs. Come puoi vedere nell'esempio XmlPullParser, può restituire un elenco.

+0

come aggiungere i dati al file esistente? – Mj1992

+0

Gentilmente fare una ricerca prima di chiedere qui. Controllare http://stackoverflow.com/questions/5059296/how-to-append-an-xml-file-in-android –

+0

thnx per l'aiuto. – Mj1992

0

Usa openFileOutput per creare file nella memoria interna e getFileStreamPath per verificare se esiste già e lavorare con loro

Per leggere i dati in una matrice solo flusso di file aperto e utilizzare qualsiasi appropriata parser XML

+0

Come applico i dati a un file esistente – Mj1992

+0

Ottieni file tramite getFileStreamPath, controlla che esista, apri FileOutputStream e scriva i tuoi dati nello stream –

Problemi correlati