2012-07-27 19 views
11

new.xmlが存在する場合はアンドロイド内部のストレージをチェックしたいのですが(それは私によって作成されます)、それは私のためのハンドルを返すべきで、私は簡単に追加することができます新しいデータを作成します。存在しない場合は、新しいデータを作成してデータを追加します。xmlファイルを作成して内部ストレージに保存するandroid

私のxmlファイル構造はこのように簡単です。

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

ファイルがある私は、新しいファイルを作成して、最初のレコードを追加するよりも、しない場合、私は唯一のit.Butに新しいレコードを追加する場合は

arraylistでこのデータをどのように読み取ることができますか。コードの例は、事前に感謝しています。

答えて

13

を使用するには、それらと

を操作するための内部ストレージとgetFileStreamPathにファイルを作成するために

+0

'serializer.endTag(null、" root "); –

0

getFilesDir()を使用して、ファイルを作成できる場所を取得します。ファイルオブジェクトが存在するかどうかを確認するには、ファイルオブジェクトFile newXml = new File(getFilesDir+"/new.xml")を作成します。次に、if(newXml.exists())を使用して存在することを確認します。

データを解析するには、dev docsを参照してください。 XmlPullParserの例のように、リストを返すことができます。彼らはすでに存在しているかどうかをチェックし、配列だけで開いているファイル・ストリームにデータを読み込み、任意の適切なXMLパーサー

+0

既存のファイルにデータを追加する方法? – Mj1992

+0

ここで質問する前に、親切に研究してください。ヘルプについては、http://stackoverflow.com/questions/5059296/how-to-append-an-xml-file-in-android –

+0

thnxをチェックしてください。 – Mj1992

0

使用openFileOutputそれはかなりありますシンプル。これはあなたを助ける:

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

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

既存のファイルにデータを追加するにはどうすればいいですか? – Mj1992

+0

getFileStreamPathでファイルを取得し、ファイルが存在することを確認し、FileOutputStreamを開いてストリームにデータを書き込みます –

関連する問題