微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML序列化器XmlSerializer及 XML解析器XmlPullParser

XML序列化器(XmlSerializer)

XmlSerializer是一个接口

1、通过XML类,获取序列化器

XmlSerializer xs = Xml.newSerializer();

2、给序列化器设置一个输出

/*
setoutput(OutputStream os, String encoding)
os 输出流
encoding 编码集
*/
fos = new FileOutputStream(file);
 xs.setoutput(fos, "UTF-8");

3、文档设置

//开始写xml头
/*
startDocument(String encoding, Boolean standalone)
encoding 编码集
standalone 是否独立
*/
xs.startDocument("utf-8", true);
//标签address
/*
startTag(String namespace, String name)
namespace 名称空间  一种约束
name 标签名

//下面是没有名称间的情况
*/
 xs.startTag(null, "smss");
 //设置标签内容
xs.text(sms.getAddress());
//标签结束,有开始必须有结束,参数说明同startTag
xs.endTag(null, "smss");
//文档结束
xs.endDocument();

XML解析(XmlPullParser)

1、获取XmlPullParser的参数

XmlPullParser parser = Xml.newPullParser();

2、设置输入

/*
setInputStream(InputStream is, String encoding)
is 输入流
encoding 编码集
*/
  parser.setInput(in,"utf-8");

3、获取内容

//获取事件类型parser.getEventType()
int type = parser.getEventType();
//判断是否结束 type!=XmlPullParser.END_DOCUMENT
while(type!=XmlPullParser.END_DOCUMENT) {
    switch (type) {
    case XmlPullParser.START_TAG:
         //parser.getName()获取标签名
         if("weather".equals(parser.getName())) {
                //创建集合对象
               weatherList = new ArrayList<Channel>();
               //parser.getAttributeValue(0)获取属性值
           }else if("channel".equals(parser.getName())) {
                channel = new Channel();
                //获取id值
                String id = parser.getAttributeValue(0);
                channel.setId(id);
            }else if ("city".equals(parser.getName())) {
                 //获取city属性
                 //parser.nextText()获取当前标签文本
                String city = parser.nextText();
                channel.setCity(city);
              }else if ("temp".equals(parser.getName())) {
                //获取<u>temp</u>属性
                String temp = parser.nextText();
                 channel.setTemp(temp);
              }else if ("pm250".equals(parser.getName())) {
                 String pm250 = parser.nextText();
                 channel.setPm250(pm250);
              }else if ("wind".equals(parser.getName())) {
                  String wind = parser.nextText();
                  channel.setwind(wind);
              }
              break;
        //判断是不是标签结尾,如果是,进行封装
        case XmlPullParser.END_TAG:
              if("channel".equals(parser.getName())) {
                   weatherList.add(channel);
               }
           }
          //获取一个解析类型
         type = parser.next();
     }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。