XML 4种解析方式示例

移动开发
android中XML文件解析方式的一个汇总示例。其中包括dom解析、dom4j解析、pull解析和SAX解析对示例xml文件进行解析的具体实现步骤,并有详细的注释。该实例将xml文件解析为实体类,并通过pstView进行展现。

功能分类:工具

支持平台:Android

运行环境:Eclippse

开发语言:Java

开发工具:Eclippse

源码大小:13.01MB

源码简介

android中XML文件解析方式的一个汇总示例。

其中包括dom解析、dom4j解析、pull解析和SAX解析对示例xml文件进行解析的具体实现步骤,并有详细的注释。该实例将xml文件解析为实体类,并通过pstView进行展现。

注:其中dom4j解析需要附加类库:dom4j-1.6.1.jar,压缩包中给出了完整的dom4j的类库。如果只做解析,只要引入dom4j-1.6.1.jar即可。

源码运行截图

 

    点击不同按钮会通过不同方式进行解析,不过展示效果相同

    解析完成后通过pstview展现

    点击条目展现详细信息(来自xml文件的内容)

 

源码片段

    /**android内置了pull解析,相对dom解析来说pull更省内存.*/ 

    pubpc class XmlPullParserUtil { 

      

        pubpc static Arraypst<cdentity> pullParser(InputStream in){ 

            Arraypst<cdentity> cds = null

            try { 

                //构建pull解析工厂 

                XmlPullParserFactory factory; 

                factory = XmlPullParserFactory.newInstance(); 

                //构建pull解析器对象 

                XmlPullParser parser =  factory.newPullParser(); 

                //设置解析器的数据源 

                parser.setInput(new InputStreamReader(in)); 

                //获取事件,开始进行解析 

                int eventType = parser.getEventType(); 

                //将要生成的CD对象 

                CDEntity entity = null

                //循环遍历xml文档,直到遍历到文档末尾 

                while(eventType != XmlPullParser.END_DOCUMENT){ 

                    switch(eventType){ 

                    //在xml文档开始的时候构建Arraypst对象。 

                    case XmlPullParser.START_DOCUMENT: 

                        cds = new Arraypst<cdentity>(); 

                        break

                    //在标签开始时对标签名进行判断 

                    case XmlPullParser.START_TAG: 

                        String name = parser.getName(); 

                        //标签名为CD时,构建CD对象 

                        if("CD".equals(name)){ 

                            entity = new CDEntity(); 

                        //如果标签为title,则cd肯定不为空,且获取到的文本为cd标题,则将cd的标题属性设置为title标签的文本 

                        }else if("TITLE".equals(name)){ 

                            entity.setTitle(parser.nextText()); 

                        }else if("ARTIST".equals(name)){ 

                            entity.setArtist(parser.nextText()); 

                        }else if("COUNTRY".equals(name)){ 

                            entity.setCountry(parser.nextText()); 

                        }else if("COMPANY".equals(name)){ 

                            entity.setCompany(parser.nextText()); 

                        }else if("PRICE".equals(name)){ 

                            entity.setPrice(Float.parseFloat(parser.nextText())); 

                        }else if("YEAR".equals(name)){ 

                            entity.setYear(Integer.parseInt(parser.nextText())); 

                        } 

                        break

                    //标签结束后,判断结束标签是什么。如果cd标签结束,则生成cd对象完成,应该将其添加到Arraypst中 

                    case XmlPullParser.END_TAG: 

                        if("CD".equals(parser.getName())){ 

                            cds.add(entity); 

                        } 

                        break

                    } 

                    //循环处理结束后,需要将标签设置为下一个标签,避免无限循环 

                    eventType = parser.next(); 

                } 

            } catch (XmlPullParserException e) { 

                e.printStackTrace(); 

            } catch (IOException e) { 

                e.printStackTrace(); 

            } 

            System.out.println(cds); 

            return cds; 

        } 

    </cdentity></cdentity></cdentity> 

源码下载地址:http://down.51cto.com/data/1968715

责任编辑:闫佳明 来源: 网络整理
相关推荐

2011-08-08 14:13:47

iPhone XML NSXMLParse

2009-09-09 14:40:15

C# XML解析

2019-12-27 18:07:53

Python网络爬虫HTML

2010-03-05 15:01:29

Python解析XML

2010-08-06 09:38:11

Flex读取XML

2016-02-16 10:26:58

PythonXML方式

2009-12-02 10:49:59

PHP解析XML元素结

2021-08-10 15:44:37

PostgreSQL表分区分区表

2011-04-13 14:38:17

2018-04-28 15:51:33

Mybatis方式传递

2011-06-22 15:21:08

XML

2009-03-31 13:12:30

解析XMLJava

2020-10-21 10:37:37

混合云

2010-08-03 09:20:33

Flex读取XML配置

2009-06-11 17:22:03

操作xml方式Java

2020-11-10 10:59:19

大数据大数据发展风险管理

2018-11-12 10:41:56

物联网IoT玩具

2010-07-27 15:03:37

Flex ArrayC

2019-04-10 08:24:06

vue组件通信

2010-09-13 12:19:03

点赞
收藏

51CTO技术栈公众号