2012-08-09 69 views
0

朋友我想在我的android應用程序中創建一個xml文件,我想爲圖像存儲變量(稍後我會從資源中獲取該圖像),日期,時間&號碼。所有這些東西都會在運行時發生。所以我發現很難將它們保存爲xml文件的形式。我也希望再次讀取這個細絲的信息。請幫助我一樣。在android中創建一個xml文件&以後讀取該文件

好友我的解決方案,從http://www.anddev.org/write_a_simple_xml_file_in_the_sd_card_using_xmlserializer-t8350.html但現在我所面臨的問題是,只有最新的值都被寫入與最後的值(我使用日期的功能進行了測試) 請幫我爲同一

+0

您可以使用'DOM'或'SAX' API來創建和解析XML文檔。 – adatapost 2012-08-09 07:52:15

+0

@AVD可以與我分享任何教程/代碼以供參考嗎? – onkar 2012-08-09 07:54:14

回答

0

您可以使用DOMSAX API來創建和分析XML文檔。

DOM樣本來創建XML文檔:

DocumentBuilderFactory factory=null; 
DocumentBuilder builder=null; 
try { 
    //1 
    factory=DocumentBuilderFactory.newInstance(); 
    builder=factory.newDocumentBuilder(); 

    //2 
    Document document=builder.newDocument(); 

    //3 
    document.setXmlVersion("1.0"); 

    //4 
    Node root=document.createElement("Students"); 


    Element student=document.createElement("Student"); 
    student.setAttribute("class", "1"); 
    Element roll=document.createElement("Roll"); 
    Element name=document.createElement("Name"); 

    roll.appendChild(document.createTextNode("10")); 
    name.appendChild(document.createTextNode("Mr.X")); 

    student.appendChild(roll); 
    student.appendChild(name); 

    root.appendChild(student); 

    document.appendChild(root); 

     //5 
    TransformerFactory transFactory=TransformerFactory.newInstance(); 
    Transformer trans=transFactory.newTransformer(); 

    trans.setOutputProperty(OutputKeys.INDENT, "yes"); 
    trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5"); 

    trans.transform(new DOMSource(document),new StreamResult("file.xml")); 

    } catch (Exception e) { 
     System.out.println(e); 
    } 

讀取/解析XML文檔:

DocumentBuilderFactory factory=null; 
    DocumentBuilder builder=null; 
    Document doc=null; 

    try { 
    factory=DocumentBuilderFactory.newInstance(); 
    builder=factory.newDocumentBuilder(); 

    doc=builder.parse("file.xml"); 

    Element root=doc.getDocumentElement(); //root 

    NodeList list=root.getChildNodes(); 

    for(int i=0;i<list.getLength();i++){ 
    Node node=list.item(i); 
    switch(node.getNodeType()){ 
     case Node.TEXT_NODE: 
        System.out.println("Text Node"); break; 
     case Node.ELEMENT_NODE: 
      case Node.ATTRIBUTE_NODE: 
        System.out.println("Element Node"); 
        NodeList student=node.getChildNodes(); 
        if(node.hasAttributes()){ 
         System.out.println(node.getAttributes() 
           .getNamedItem("class").getTextContent()); 
       } 
      for(int j=0;j<student.getLength();j++){ 
        Node nd=student.item(j); 
          if(nd.getNodeType()==Node.ELEMENT_NODE){ 
          System.out.println(nd.getNodeName() + " " 
             + nd.getTextContent()); 
          } 
      } 
      break; 
     default: 
       System.out.println("Other node"); 
       break; 
      } 
     } 
    } catch (Exception e) { 
     System.out.println(e); 
     }