《第一行代码-Android》学习笔记(二十三)

来源:互联网 发布:jdk1.8源码下载官网 编辑:程序博客网 时间:2024/05/17 09:06

一.Pull解析方式:

a) 获取XmlPullParserFactory的实例:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

b) 通过XmlPullParserFactory的实例获取到XmlPullParser实例:

XmlPullParser xmlPullParser = factory.newPullParser();

c) 调用XmlPullParsersetInput方法开始解析Xml数据:

xmlPullParser.setInput(new StringReader(result));

d) 获取到eventType,通过while循环,不断的解析每个节点;

e) 在循环中,通过XmlPullParsergetName方法获取到当前节点的名字,在XmlPullParser.START_TAG中,利用nextText()获取到节点的具体内容:

 while(eventType != XmlPullParser.END_DOCUMENT){

                String nodeName = xmlPullParser.getName();

                switch(eventType)

                {

                    case XmlPullParser.START_TAG :

                        if("id".equals(nodeName))

                        {

                            id = xmlPullParser.nextText();

                        }

                        else if("name".equals(nodeName))

                        {

                            name = xmlPullParser.nextText();

                        }

                        else if("version".equals(nodeName))

                        {

                            version = xmlPullParser.nextText();

                        }

                        break;

 

                    case XmlPullParser.END_TAG :

                        if("app".equals(nodeName))

                        {

                            App app = new App();

                            app.setId(Integer.parseInt(id));

                            app.setName(name);

                            app.setVersion(version);

                            list.add(app);

                        }

                        break;

                    default:

                        break;

                }

                eventType = xmlPullParser.next();

            }

 

二.SAX解析方式:

1.新建一个类继承DefaultHandler,并重写父类的五个方法:

a) startDocument()中初始化一些参数

b) startElement()获取nodeName

c) characters()中进行数据的组装

d) endElement()中进行一些清零操作

2.通过SAXParserFactory的类方法获得其实例:

    SAXParserFactory factory = SAXParserFactory.newInstance();

3.通过上面的实例获得SAXParser的实例:

     SAXParser parser = factory.newSAXParser();

4.通过上面的实例获得XMLReader实例:

    XMLReader xmlReader = parser.getXMLReader();

5.将刚刚的DefaultHandler子类的实例传入到XMLReader实例的setContentHandler()方法中:

    ContentHandler contentHandler = new ContentHandler();

    xmlReader.setContentHandler(contentHandler);

6.开始解析xml

xmlReader.parse(new InputSource(new StringReader(result)));

7.解析完毕。

0 0
原创粉丝点击