ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-04-19 18:44:15  阅读:211  来源: 互联网

标签:XML 解析器 String getName parser equals XmlPullParser 序列化 channel


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();
     }

标签:XML,解析器,String,getName,parser,equals,XmlPullParser,序列化,channel
来源: https://www.cnblogs.com/lyhcc/p/10737761.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有