2012-07-27 2 views
11

new.xml이 존재하면 안드로이드 내부 저장 장치를 체크하고 싶습니다. (나에 의해 생성 될 것입니다.) 그러면 핸들을 돌려줘서 쉽게 추가 할 수 있습니다. 새 데이터를 생성합니다. 존재하지 않으면 새 데이터를 작성하고 데이터를 추가하십시오.xml 파일을 생성하고 내부 저장소에 저장하십시오. android

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

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

따라서 serializer.endTag (null, "root"); –

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을 열고 데이터를 스트림에 씁니다 –

관련 문제