zoukankan      html  css  js  c++  java
  • android之DOM生成与解析

     DOM解析不适合于进行大数据文件的操作,DOM解析适合于对文件进行修改和随机存取的操作。 

     DOM生成

      //判断一下是否存在sdcard
      if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

        //不存在
        return;
      }

      File file = new File(Environment.getExternalStorageDirectory().toString()+File.separator+"xkdata"+File.separator+"member.xml");

      if(!file.getParentFile().exists()) {

        file.getParentFile().mkdirs();
      }

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = null;
      try {

        builder = dbf.newDocumentBuilder();
      } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      Document doc = builder.newDocument();
      Element addresslist = doc.createElement("addresslist");
      Element linkman = doc.createElement("linkman");
      Element name = doc.createElement("name");
      Element email = doc.createElement("email");

      name.appendChild(doc.createTextNode(DomActivity.this.name.getText().toString()));
      email.appendChild(doc.createTextNode(DomActivity.this.email.getText().toString()));
      linkman.appendChild(name);
      linkman.appendChild(email);
      addresslist.appendChild(linkman);
      doc.appendChild(addresslist);

      //输出文档到文件中
      TransformerFactory tf = TransformerFactory.newInstance();
      Transformer t = null;
      try {
        t = tf.newTransformer();
      } catch (TransformerConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      t.setOutputProperty(OutputKeys.ENCODING, "GBK");
      DOMSource source = new DOMSource(doc);
      StreamResult result = new StreamResult(file);

      try {
        t.transform(source, result);
      } catch (TransformerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      

      DOM解析 

      //判断一下是否存在sdcard
      if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

        //不存在
        return;
      }

      File file = new File(Environment.getExternalStorageDirectory().toString()+File.separator+"xkdata"+File.separator+"member.xml");
      if(!file.exists()) {

        return;
      }

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = null;
      try {

        builder = dbf.newDocumentBuilder();
      } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }

      Document doc = null;
      try {
        doc = builder.parse(file);
      } catch (SAXException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
      } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
      }

      NodeList nl = doc.getElementsByTagName("linkman");
      for(int i=0;i<nl.getLength();i++){

        Element e = (Element)nl.item(i);
        DomReadActivity.this.name.setText(e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
        DomReadActivity.this.email.setText(e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
      }

  • 相关阅读:
    最全的ASP.NET开源CMS汇总
    excel学习range
    多线程写文件异常(正由另一进程使用,因此该进程无法访问该文件)的解决方法
    EXCEL之Range,cells,offset,end用法
    天佑中华
    敏捷测试感悟(之二)
    4月份到上海出差
    《Google API大全:编程·开发·实例》一书将在本周末的GDD(Google开发者大会)上首发
    敏捷测试感悟(之一)
    拿到了TD的3G测试手机
  • 原文地址:https://www.cnblogs.com/xingkai/p/5109601.html
Copyright © 2011-2022 走看看