《黑马程序员安卓教程:使用 Pull 解析 Xml 格式数据》由会员分享,可在线阅读,更多相关《黑马程序员安卓教程:使用 Pull 解析 Xml 格式数据(2页珍藏版)》请在金锄头文库上搜索。
1、使用使用 Pull 解析解析 Xml 格式数据格式数据asserts 资源目录中的文件只能读不能写,多用于随 apk 一起发布的固定不变的数据,比如可以将国内所有的城市列表放在里面。这里将 1.7.3 节中生成的 info2.xml 放到 asserts 目录中,然后读取、解析、展现。【文件文件 1-14】MainActivity.java 代码片段1./使用 pull 解析 xml 数据2.public void click3(View v)throws Exception 3./*4.* 将解析出来的数据封装在 Sms 中,然后保存到 ArrayList 中5.* Sms 是自定义的一个
2、JavaBean 6.*/7.ArrayList smses = null;8.Sms sms = null; 9./*10.* 调用父类提供的 getAssets()方法获取 AssertManager 对象 11.*/12.AssetManager assetManager = getAssets();13./使用 assetManager 的 open 方法直接获取输入流对象14.InputStream inputStream = assetManager.open(“info2.xml“);15./通过 Xml 的静态方法获取 Xml 解析器16.XmlPullParser parse
3、r = Xml.newPullParser();17./设置输入流和编码 18.parser.setInput(inputStream, “utf-8“);19./获取事件类型20.int event = parser.next();21./如果没有解析到文档的结尾,则循环解析 22.while(event!=XmlPullParser.END_DOCUMENT)23./获取当前解析到的标签名称24.String tagName = parser.getName();25./如果是“开始标签”事件26.if (event=XmlPullParser.START_TAG) 27./判断当前解析到
4、的开始标签是哪个28.if(“smses“.equals(tagName)29.smses= newArrayList();30.elseif(“sms“.equals(tagName)31.sms = new Sms();32.elseif(“address“.equals(tagName)33.sms.setAddress(parser.nextText();34.elseif(“body“.equals(tagName)35.sms.setBody(parser.nextText();36.elseif(“time“.equals(tagName)2537.sms.setTime(par
5、ser.nextText();38.39./如果是“结束标签”事件40.else if (event = XmlPullParser.END_TAG) 41.if(“sms“.equals(tagName)42./如果是 sms结尾,则将创建的sms 对象添加到集合中43.smses.add(sms);44.45.46./继续获取下一个事件 47.event = parser.next();48.49.inputStream.close();50./将数据展示到界面 51.showSms(smses);52. 53.54./*55.* 将短信显示到 TextView 中 56.*/57.private void showSms(ArrayList smses)58.StringBuilder sb = new StringBuilder();59.for(Sms s : smses) 60.sb.append(s.toString()+“n“);61.62.tv_sms.setText(sb.toString();63.注意:注意:在上面的代码中我们不仅学到如何解析 xml,还学到了如何读取 aserts 目录中的数据。