android pull解析xml
来源:互联网 发布:网络手机制式切换工具 编辑:程序博客网 时间:2024/06/08 17:57
上一篇介绍了如何序列化一份xml文件,那接下来必不可少的肯定是解析它了,那现在我们就来解析一下上一篇生成的那份xml文件。如下:对了,方便起见,这份msmInfo.xml文件我把它放到src根目录下
序列化xml用的是XmlSerializer,那相应的解析就是用的XmlPullParser。具体要怎么做呢?
解析过程XmlParserService.java
import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import android.util.Xml;import com.example.practice.domino.MsmInfo;public class XmlParserService { public static List<MsmInfo> xmlMsmParser(InputStream inputStream) throws XmlPullParserException, IOException { List<MsmInfo> msmlist = null; MsmInfo msmInfo = null; XmlPullParser parser = Xml.newPullParser();// 新建一个Xml Pull Parser parser.setInput(inputStream, "utf-8");// 设置输入流解析器将开始。这个调用重置解析器的状态并设置初始值START_DOCUMENT事件类型 int eventType = parser.getEventType();// 返回当前事件的类型(START_TAG、END_TAG、文本等)。 while (eventType != XmlPullParser.END_DOCUMENT) {// 只要文档没结束,循环一直执行 switch (eventType) { case XmlPullParser.START_TAG:// 当事件类型为START_TAG时,也就是解析到开始标签 if ("msms".equals(parser.getName())) { msmlist = new ArrayList<MsmInfo>(); } else if ("msm".equals(parser.getName())) { msmInfo = new MsmInfo(); int id = Integer.parseInt(parser.getAttributeValue(0));// 解析当前标签的属性 msmInfo.setId(id); } else if ("type".equals(parser.getName())) { int type = Integer.parseInt(parser.nextText().trim()); msmInfo.setType(type); } else if ("date".equals(parser.getName())) { long date = Long.parseLong(parser.nextText().trim()); msmInfo.setDate(date); } else if ("address".equals(parser.getName())) { String address = parser.nextText().trim(); msmInfo.setAddress(address); } else if ("content".equals(parser.getName())) { String content = parser.nextText().trim(); msmInfo.setContent(content); } break; case XmlPullParser.END_TAG:// 当事件类型为END_TAG时,也就是解析到结束标签 if ("msm".equals(parser.getName())) { msmlist.add(msmInfo);// 将对象添加到集合 msmInfo = null;// 重置短信对象 } break; } eventType = parser.next();// 游标下移,继续解析下一个对象,切记:这个不可少 } return msmlist; }}
呐,我们肯定不会只解析就放那里不管了,当然要把解析到的内容显示出来嘛,代码如下:
//得到msmInfo.xml文件的输入流 InputStream inputStream = XmlParse_Aty.class.getClassLoader() .getResourceAsStream("msmInfo.xml"); try { List<MsmInfo> msmList = XmlParserService .xmlMsmParser(inputStream); StringBuffer buffer = new StringBuffer(); for (MsmInfo msmInfo2 : msmList) { buffer.append(msmInfo2.toString()); buffer.append("\n\n"); } textView.setText(buffer.toString()); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
MsmInfo.java
public class MsmInfo { private int id; private int type;// 1发送,0接收 private long date;// 短信时间 private String address;// 收件人or发件人 private String content;// 短信内容 public MsmInfo() { } public MsmInfo(int id, int type, long date, String address, String content) { this.id = id; this.type = type; this.date = date; this.address = address; this.content = content; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getType() { return type; } public void setType(int type) { this.type = type; } public long getDate() { return date; } public void setDate(long date) { this.date = date; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "[id=" + id + ", type=" + type + ", 时间=" + date + ", 电话=" + address + ", 短信内容=" + content + "]"; }}
到这里简单的代码思路就完成啦!
0 0
- Android Pull解析xml
- android pull 解析xml
- android PULL 解析XML
- Android Pull解析xml
- Android Pull 解析 XML
- Android Pull 解析 XML
- Android Pull解析xml
- Android PULL解析XML
- Android Pull解析xml
- Android PULL解析XML
- android xml-----Pull解析
- android pull解析xml
- Android Pull 解析 Xml
- Android Pull解析xml
- Android PULL解析XML
- Android XML Pull解析
- android,pull解析xml
- android PULL解析XML
- debug : 下载动态url失败的原因之一
- 第二章第八题
- Universal-Image-Loader学习系列(二),ImageLoaderConfiguration的使用
- 第二章第九题
- LNMP安装
- android pull解析xml
- 学习php笔记
- 第二章第十题
- jsp基础学习(五)----jsp指令
- 杭电2391 Filthy Rich
- oracle sql 之表及约束
- 解决Android开发中ViewPager动态设置PagerAdapter时第二次进入Fragment内容不显示的问题
- matlab plot函数使用总结(一)
- 针孔相机拍摄的图像坐标和空间点的对应关系