zoukankan      html  css  js  c++  java
  • android 之 XMLPull

      Pull解析

      Pull的XML解析操作与SAX解析操作类似,也是采用事件驱动的方式。当XML文档开始解析或者遇到节点时都会有相应的事件代码触发。

      主要涉及两个类:

      org.xmlpull.v1.XmlPullParserFactory

      org.xmlpull.v1.XmlPullParser

      

      使用XMLPull解析xml文件的步骤:

      1.创建工厂类

      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

      2.创建parser

      XmlPullParser xpp = factory.newPullParser();

      3.设置输入流,即要解析的内容

      xpp.setInput(input, "GBK"); //这里主要由两种形式,字符流(如:StringReader)或者字节流(如:FileInputStream)

      4.通过循环,解析内容  

      int eventType = xpp.getEventType(); //必须要有
      while(eventType != XmlPullParser.END_DOCUMENT) {

        if(eventType == XmlPullParser.START_DOCUMENT) {

          all = new ArrayList<LinkMan>();
        } else if(eventType == XmlPullParser.START_TAG) {

          elementName = xpp.getName();
          if("linkman".equals(elementName)) {

            man = new LinkMan();
          }
        } else if(eventType == XmlPullParser.END_TAG) {

          elementName = xpp.getName();
          if("linkman".equals(elementName)) {

            all.add(man);
            man = null;
          }
        } else if(eventType == XmlPullParser.TEXT) {

          if("name".equals(elementName)) {

            man.setName(xpp.getText());
          } else if("email".equals(elementName)) {

            man.setEmail(xpp.getText());
          }
        }

        eventType = xpp.next(); //一定要有

      }

      Pull生成XML文档

      需要利用org.xmlpull.v1.XmlSerializer  

       使用XmlSerializer生成XML文件的步骤和解析xml文件的步骤类似:

      1.创建工厂类

      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

      2.创建XmlSerializer

      XmlSerializer xs = factory.newSerializer();

      3.设置输出流,即要写入的目标位置流,可以是字节流,也可以是字符流。

      xs.setOutput(output, "UTF-8");

      4.处理输出内容  

      xs.startDocument("UTF-8", true);
      xs.startTag(null, "addresslist");
      Iterator<LinkMan> iter = this.all.iterator();
      while(iter.hasNext()) {

        LinkMan man = iter.next();
        xs.startTag(null, "linkman");
        xs.startTag(null, "name");
        xs.text(man.getName());
        xs.endTag(null, "name");
        xs.startTag(null, "email");
        xs.text(man.getEmail());
        xs.endTag(null, "email");
        xs.endTag(null, "linkman");
      }

    xs.endTag(null, "addresslist");
    xs.endDocument();
    xs.flush();

  • 相关阅读:
    常见的mysql查询命令
    Linux查看系统硬件信息命令汇总
    抓取页面上的email邮箱
    inotify+rsync实时同步【优化版本-转发】
    inotify+rsync做实时同步
    用配置文件里面的参数值替换yaml模板中的变量值【python】
    合并文件内容到另一个文件尾部[python]
    python farbric 主机/密钥列表配置
    python 项目环境包的名称和版本导出和导入
    sendmai.py
  • 原文地址:https://www.cnblogs.com/xingkai/p/5110559.html
Copyright © 2011-2022 走看看