2012-08-09 50 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); 
     }