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

  • 相关阅读:
    进程间通信-管道,消息,共享内存,信号量,信号,scoket
    高并发架构相关概念
    在WSL2中 安装 .NET Core SDK 进行Linux 开发工作
    OKR专题
    logback是怎么知道java代码的行数的?
    IDEA plugins
    [LeetCode] 956. Tallest Billboard 最高的广告牌
    上周热点回顾(8.10-8.16)团队
    【故障公告】腾讯云短信服务故障造成无法发送手机短信团队
    HBase~hbase-shaded-client解决包冲突问题
  • 原文地址:https://www.cnblogs.com/xingkai/p/5110559.html
Copyright © 2011-2022 走看看