2012-07-27 20 views
11

अगर new.xml मौजूद है (जो मेरे द्वारा बनाया जाएगा) तो एंड्रॉइड आंतरिक स्टोरेज में जांचना चाहते हैं तो इसे मुझे इसके लिए एक हैंडल वापस करना चाहिए और मैं आसानी से संलग्न करने में सक्षम हो सकता हूं इसके लिए नया डेटा। अगर यह अस्तित्व में नहीं है तो एक नया बनाएं और इसमें डेटा जोड़ें।एक्सएमएल फ़ाइल बनाएं और इसे आंतरिक स्टोरेज एंड्रॉइड में सहेजें

मेरी एक्सएमएल फ़ाइल संरचना इस तरह सरल होगी।

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

हैं फ़ाइल है मैं केवल गया.लेकिन लिए एक नया रिकार्ड जोड़ देगा, अगर नहीं है की तुलना में मैं एक नई फ़ाइल बना सकते हैं और इसे करने के लिए पहले रिकॉर्ड जोड़ देगा।

और मैं इस डेटा को arraylist में कैसे पढ़ पाऊंगा। कोड के साथ एक उदाहरण अग्रिम में बहुत अच्छा धन्यवाद होगा।

उत्तर

13

का उपयोग यह बल्कि है करने के लिए के लिए आंतरिक भंडारण और getFileStreamPath में फ़ाइल बनाने के लिए सरल। इस तुम्हारी मदद करेगा:

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

डोम पार्सर का उपयोग कर डेटा वापस पढ़ने के लिए:

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

में लिखें, इसलिए कोई 'serializer.endTag (शून्य," रूट ") नहीं है; –

0

getFilesDir() का उपयोग करें ताकि आप कहां फाइलें बना सकें। फ़ाइल ऑब्जेक्ट File newXml = new File(getFilesDir+"/new.xml") बनाकर फ़ाइल मौजूद है या नहीं। फिर जांचें कि यह if(newXml.exists()) का उपयोग कर मौजूद है या नहीं।

डेटा को पार्स करने के लिए, dev docs देखें। जैसा कि आप XmlPullParser उदाहरण में देख सकते हैं, यह एक सूची वापस कर सकता है।

+0

मौजूदा फ़ाइल के लिए डेटा संलग्न करने का तरीका? – Mj1992

+0

कृपया पूछने से पहले कृपया अच्छी तरह से शोध करें। सहायता के लिए http://stackoverflow.com/questions/5059296/how-to-append-an-xml-file-in-android –

+0

thnx देखें। – Mj1992

0

उपयोग openFileOutput जाँच अगर वे पहले से मौजूद है और उनके साथ काम करने

सरणी सिर्फ फ़ाइल खोलने धारा में डेटा पढ़ सकते हैं और कोई भी उचित XML पार्सर

+0

मैं डेटा को मौजूदा फ़ाइल में कैसे जोड़ूं – Mj1992

+0

getFileStreamPath के माध्यम से फ़ाइल प्राप्त करें, जांचें कि यह मौजूद है, FileOutputStream खोलें और अपना डेटा स्ट्रीम –

संबंधित मुद्दे