用XmlPullParser解析XML文件

package jacky.xmlparser;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import java.io.InputStream;
import java.util.List;

public class MainActivity extends AppCompatActivity {

          @Override
          protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                    try {
                              TextView tv_sms= (TextView) findViewById(R.id.tv_sms);
                              //通过上下文获取资产管理者
                              InputStream inputStream=getAssets().open("sms.xml");
                              //调用我们定义的xml业务方法
                              List<Sms> smss= SmsParser.parserXml(inputStream);
                              //遍历List,组拼显示内容
                              StringBuffer sb=new StringBuffer();
                              for (Sms sms:smss){
                                        sb.append(sms.toString());
                              }
                              tv_sms.setText(sb);

                    } catch (Exception e) {
                              e.printStackTrace();
                    }
          }
}

package jacky.xmlparser;

/**
 * 作者:Jacky
 * 邮箱:550997728@qq.com
 * 时间:2016/1/28 20:29
 */
public class Sms {
          private String address;
          private String body;
          private String data;

          public String getAddress() {
                    return address;
          }

          public void setAddress(String address) {
                    this.address = address;
          }

          public String getBody() {
                    return body;
          }

          public void setBody(String body) {
                    this.body = body;
          }

          public String getData() {
                    return data;
          }

          public void setData(String data) {
                    this.data = data;
          }

          @Override
          public String toString() {
                    return "SmsParser{" +
                         "address='" + address + '\'' +
                         ", body='" + body + '\'' +
                         ", data='" + data + '\'' +
                         '}';
          }
}

package jacky.xmlparser;

import android.util.Xml;

import org.xmlpull.v1.XmlPullParser;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * 作者:Jacky
 * 邮箱:550997728@qq.com
 * 时间:2016/1/28 20:29
 */
public class SmsParser {
          //定义全局变量
          private static Sms sms;
          private static List<Sms> smss;

          /**
           * 服务器以流的形式把数据返回
           *
           * @return
           */
          public static List<Sms> parserXml(InputStream in) {
                    try {
                              //获取XmlPullParser解析实例
                              XmlPullParser parser = Xml.newPullParser();
                              //设置XmlPullParser参数
                              parser.setInput(in, "utf-8");
                              //获取事件类型
                              int type = parser.getEventType();
                              while (type != XmlPullParser.END_DOCUMENT) {
                                        switch (type) {
                                                  case XmlPullParser.START_TAG://解析开始标签
                                                            if ("smss".equals(parser.getName())){
                                                                      //创建一个集合对象
                                                                      smss = new ArrayList<Sms>();
                                                            }else if ("sms".equals(parser.getName())){
                                                                      sms = new Sms();
                                                            }else if ("address".equals(parser.getName())){
                                                                      //获取address标签间的数据
                                                                      String address=parser.nextText();
                                                                      sms.setAddress(address);
                                                            }else if ("body".equals(parser.getName())){
                                                                      //获取body标签间的数据
                                                                      String body=parser.nextText();
                                                                      sms.setBody(body);
                                                            }else if ("data".equals(parser.getName())){
                                                                      //获取data标签间的数据
                                                                      String data=parser.nextText();
                                                                      sms.setData(data);
                                                            }
                                                            break;
                                                  case XmlPullParser.END_TAG://解析结束标志
                                                            //判断要解析的结束标签
                                                            if ("sms".equals(parser.getName())){
                                                                      //将解析到的sms组数据放到List中
                                                                   smss.add(sms);
                                                            }
                                                            break;

                                        }
                                        type=parser.next();
                              }

                    } catch (Exception e) {
                              e.printStackTrace();
                    }


                    return smss;
          }

}

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗杰海贼团

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值