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();

  • 相关阅读:
    复制功能的实现
    SDWebImage从缓存中获取图片
    修改屏幕亮度
    使用系统的CoreLocation定位
    button设置边宽和圆角
    在日期选择轮中选择的时间转换成年龄
    字符串与数组互转
    使用ASI传递post表单..参数是数组
    点击头像单独把图片拉取出来.然后再次点击回到初始效果
    Xcode svn import项目 上传.a文件(静态库)
  • 原文地址:https://www.cnblogs.com/xingkai/p/5110559.html
Copyright © 2011-2022 走看看