一、生成xml文件(XmlSerializer方法)

与StringBuffer方式不同:

按钮点击事件改为:

public void click(View v){    try {        XmlSerializer serializer = Xml.newSerializer();        File file = new                     File(Environment.getExternalStorageDirectory().getPath(),"Smsdata.xml");        FileOutputStream fos = new FileOutputStream(file);        serializer.setOutput(fos,"utf-8");        serializer.startDocument("utf-8",true);        serializer.startTag(null,"smss");        for (Sms sms : smsList){            serializer.startTag(null,"sms");            serializer.startTag(null,"address");            serializer.text(sms.getAddress());            serializer.endTag(null,"address");            serializer.startTag(null,"body");            serializer.text(sms.getBody());            serializer.endTag(null,"body");            serializer.startTag(null,"date");            serializer.text(sms.getDate());            serializer.endTag(null,"date");            serializer.endTag(null,"sms");        }     serializer.endTag(null,"smss");     serializer.endDocument();     fos.close();     } catch (Exception e) {            e.printStackTrace();     }}

二、解析xml文件(XmlPullParser)(模拟天气信息)

1.根据xml文件定义java实体类,包含属性,getter()、setter(),toString()显示方法

2.定义一个java类,功能是来解析xml

3.获取XmlPullParser解析实例

XmlPullParser parser = Xml.newPullParser();

4.设置XmlPullParser的参数

parser.setInput(in,"utf-8");

5.获取事件类型,不停的解析,在解析xml的类中定义方法

public static List parseXml(InputStream in) throws Exception{    LIst weatherLists = null;                          //定义一个集合    Channel channel = null;                                     //定义一个实体对象    int type = parser.getEventType();    while(type!=XmlPullParser.END_DOCLMENT){                    //不到结尾一直循环            switch(type){        case XmlPullParser.START_TAG:                           //开始标签            //开始具体判断是解析到了哪个节点            if("weather".equals(parser.getName())){             //如果是weather的开始标签                weatherLists = new ArrayList();        //创建一个集合对象            }else if("channel".equals(parser.getName())){       //如果是channel开始标签                channel = new Channel();                        //创建Channel对象                String id = parse.getAttributeValue(0);         //取出文件中id值,“0”含义为取第一位                channel.setId(id);                              //取出的id传给Channel对象            }else if("city".equals(parser.getName())){          //如果是city开始标签                String city = parser.nextText();                //取出city数据                channel.setCity(city);                          //取出的city值传给Channel对象            }else if("temp".equals(parser.getName())){                          String temp= parser.nextText();                                channel.setTemp(temp);                                      }else if("wind".equals(parser.getName())){                          String wind= parser.nextText();                 //同上取出temp、wind、pm250值                channel.setWind(wind);                                      }else if("pm250".equals(parser.getName())){                          String pm250= parser.nextText();                                channel.setPm250(pm250);                                      }            break;        case XmlPullParser.END_TAG:                             //结束标签            if("channel".equals(parser.getName())){             //如果结束标签为channel                   weatherLists.add(channel);                   //将Channel对象放入集合中            }            break;        }        type = parser.next();                                   //下一个事件类型给type    }    return weatherLists;                                        //返回集合}

6.在MainActivity中调用所定义的解析方法     

try{    findViewById(R.id.tv_weather);            //(1)定义TextView控件,并找到控件                                                //(2)调用我们定义的解析xml方法    List weatherlists = WeatherParser.parserXml(inputStream);    StringBuffer sb = new StringBuffer();     //(3)组拼数据    for(Channel channel : weatherlists){             sb.append(channel.toString());    }        tv_weather.setText(sb.toString());        //(4)将数据展示到控件上}catch(Exception e){    e.printStackTrace();}

 

 

更多相关文章

  1. Android Makefile中如何自定义Product
  2. android 自定义控件实现波浪效果(八)
  3. android 自定义控件pickview
  4. Android自定义对话框去掉白色边框
  5. android开源系列:CircleImageView自定义圆形控件的使用
  6. Android 自定义弹窗
  7. 优酷自定义菜单功能学习
  8. android 自定义属性实现 ImageView 透明度渐变效果
  9. Android 自定义拨打电话程序段

随机推荐

  1. Android的screenOrientation设置
  2. Android--GestureOverlayView,手势识别
  3. Android中的异常处理 CrashHandler
  4. android GPS
  5. Android面经总结
  6. Android(安卓)文字自动滚动(跑马灯)效果的
  7. android 程序错误全局处理
  8. AndroidのViewFlipper和ViewPager
  9. android EditText setText发生stackoerve
  10. TextView控件的使用及总结