zoukankan      html  css  js  c++  java
  • pull解析xml文件

    pull解析和程序运行一样,从上到下执行,一个一个执行,每个节点会有对应的时间码,然后根据名字可以判断出他是那个具体的节点。

    package com.example.pullxml;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Xml;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    
    public class MainActivity extends Activity {
        private List<Mess> list=null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.btn).setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
    
                    // 1)获取src下的资源并返回输入流对象
                    InputStream in = getClassLoader().getResourceAsStream(
                            "sms2.xml");
                    // 2)获取pull解析器
                    XmlPullParser xp = Xml.newPullParser();
                    try {
                        // 3)初始化 输入流 和解析的编码集
                        xp.setInput(in, "utf-8");
                        // 4)获取节点事件 每个节点对应不同的参数,所以我们就能知道这个节点是什么节点,然后我们进行对应的操作
                        int type = xp.getEventType();
                        //声明mess封装类
                        Mess mess=null;
                        // 节点事件不是最后一个节点一直运行
                        while (type != XmlPullParser.END_DOCUMENT) {
                            switch (type) {
                            case XmlPullParser.START_TAG:
                                //获取节点的名字
                                if("message".equals(xp.getName())){
                                    //当解析到一级节点的时候开始实例化list
                                    list = new ArrayList<Mess>();
                                    
                                }else if("msm".equals(xp.getName())){
                                    //当解析到二级节点的时候开始实例化javabean
                                    mess = new Mess();
                                }else if("body".equals(xp.getName())){
                                    //这个结点是首部结点,而要获取的是下个结点的内容
                                    String body = xp.nextText();
                                    mess.setBody(body);
                                }else if("type".equals(xp.getName())){
                                    mess.setType(xp.nextText());
                                }else if("date".equals(xp.getName())){
                                    mess.setDate(xp.nextText());
                                }else if("address".equals(xp.getName())){
                                    mess.setAddress(xp.nextText());
                                }
                                break;
                            case XmlPullParser.END_TAG:
                                //当获取二级节点的末尾结点说明了这个信息获取完了,要放在list里
                                if("msm".equals(xp.getName())){
                                    list.add(mess);
                                }
                                break;
    
                            
                            }
    
                            // 让指针指向下一个节点并且返回事件参数
                            type = xp.next();
                        }
    
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    for (int i = 0; i < list.size(); i++) {
                        System.out.println(list.get(i).toString());
                    }
    
                }
            });
        }
    
    }
  • 相关阅读:
    linux系统中不同颜色的文件夹及根目录介绍
    linux命令学习 随笔
    Happiness
    Sequence Number
    base64加密解密c++代码
    Wooden Sticks
    出租车费
    关系推断
    如何在Ubuntu中安装中文输入法
    c语言中printf("%x",-1);为什么会输出-1的十六进制补码??
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/4912819.html
Copyright © 2011-2022 走看看