0

朋友我想在我的 android 应用程序中创建一个 xml 文件,我想在其中存储图像变量(稍后我将从资源中获取该图像)、日期、时间和数字。所有这些事情都会在运行时出现。所以我发现很难以 xml 文件的形式保存它们。我也希望再次从这个文件中读取信息。请帮助我。

我得到解决方案的朋友,http://www.anddev.org/write_a_simple_xml_file_in_the_sd_card_using_xmlserializer-t8350.html但现在我面临的问题是只有最新的值被最后的值覆盖(我已经使用日期功能对其进行了测试)请帮助我

4

1 回答 1

0

您可以使用DOMAPISAX来创建和解析 XML 文档。

创建 XML 文档的 DOM 示例:

 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);
      } 
于 2012-08-10T03:28:49.067 回答