Android复习之旅--XML序列化和pull解析

版权声明:本文为博主原创文章,转载需注明出处,谢谢。 https://blog.csdn.net/fengrixin/article/details/52988115

对于XML是什么,这里就不多说了,如果不懂可以google学习下。

xml是非常重要和常用的一种数据格式

XML序列化

步骤:

  1. 生成一个序列化器

    XmlSerializer serializer = Xml.newSerializer();

  2. 要把数据输出到哪里,并设置编码格式:输出流

    serializer.setOutput(FileOutputStream, “utf-8”);

  3. 通过序列化器写标签

    标签和属性中的第一个参数是 命名空间,一般为 null 即可

    serializer.startDocument("utf-8", true);  //开始文档,true表示与其他xml文件无关联
    serializer.startTag(null, "开始节点");
    serializer.attribute(null, "属性名", "属性值");  //属性可写可不写
    serializer.text("节点的内容");
    serializer.endTag(null, "结束节点");
    serializer.endDocument();   //结束文档
    
  4. 关闭流

pull解析

特点

  • 边导入边解析,基于事件驱动方式
  • 解析完一个节点后,返回该节点的事件类型,通过该事件类型做相应的业务处理
  • 当解析完一个节点后,它不会继续往下解析,需要手动指向下一个节点,继续解析
  • android默认采用pull解析

步骤
1. 先构建一个解析器

XmlPullParser parser = Xml.newPullParser();

2. 设置要解析的内容

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

3. 获取节点的事件类型来解析内容

pull的事件类型

XmlPullParser.START_DOCUMENT:文档开始
XmlPullParser.END_DOCUMENT:文档结束
XmlPullParser.START_TAG:开始标记
XmlPullParser.END_TAG:结束标记

解析过程

int event = parser.getEventType();//获取当前节点的事件类型
while(event != XmlPullParser.END_DOCUMENT) {
    switch(event) {
        case XmlPullParser.START_DOCUMENT : 
            //TODO 一般进行数据的初始化操作
            break;
        case XmlPullParser.START_TAG :
            //TODO 解析
            String tag = parser.getName();//获取当前节点的标记
            parser.getAttributeValue(0);//获取当前节点的第一个属性值
            String text = parser.nextText();//获得当前里的文本内容
            break;
        case XmlPullParser.END_TAG:
            //TODO 将数据进行保存操作
            break;
    }
    event = parser.next(); //指向下一个节点
}

案例

详情请看我在GitHub上的demo

猜你喜欢

转载自blog.csdn.net/fengrixin/article/details/52988115
今日推荐