使用pull解析Xml

使用pull解析xml文件

    在Android平台上除了可以使用SAX、DOM解析XML文件之外,还可以使用Android内置的Pull解析器解析XML文件。Pull解析器是一个开源的java项目,既可以用于Android,也可以用于JavaEE。如果用JavaEE需要把jar文件放入到类路径中,因为Android已经集成了Pull解析器,所以无需再添加任何jar文件。Android系统本身使用到的各种xml文件,其内部也是采用Pull解析器进行解析的。

1.Pull解析器的概述:

    Pull解析器的运行方式于SAX解析器相似(使用SAX在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。)它提供了类似的事件。如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当解析到某个元素时,可以调用XmlPullParser的getAttributeValue()方法获取属性的值,也可以调用nextText()方法获得该节点的值。

2.下面是本例子要解析的XML文件:

    文件名称: person.xml


3. 新建一个Android项目,在src目录下建一个person的xml文件,这样当应用被编译过后,该文件会被放在类路径底下,就可以利用类装载器快速寻找到这个文件进行解析。

    解析xml的过程是属于业务操作的过程,根据MVC的模式我们应该写在model层,也就是业务层,我们放在service包底下取名PersonService。 

我们采用JavaBean来存放每个person节点的数据,然后在用一个集合来存放所有的数据。新建一个JavaBean,它属于领域层放在domain包底下,类的名称我们取名Person(id、name、age)。

PersonService的业务类方法:

     获得破解器(Xml.newPullParser());

设置要解析的XML数据(setInput(xml,”UTF-8”));

读取XML数据,触发事件(getEventType());

对事件进行判断;START_DOCUMENT/START_TAG/….

当破解器解析完当前事件之后并不会主动往后解析,必须调用 pullParser.next()使解析器的指针进入到后面一个节点,触发相应事件;


4.编写测试方法对业务类进行测试,引入单元测试的环境

    <uses-library android:name="android.test.runner"/>

    <instrumentation

        android:name="android.test.InstrumentationTestRunner"

        android:targetPackage="cn.android.xml" />

     新建一个测试类,放在test包下,类名PersonServiceTest继承AndroidTestCase;编写测试方法。

Xml放在类路径的根目录下,通过类加载器找到该文件并以输入流方式返回; (this.getClass().getClassLoader().getResourceAsStream(“persom.xml”)); 返回一个List集合;采用增强for循环进行迭代;把person的数据往控制台进行打印,我们采用Log类往控制台打印日志信息。


在控制台添加TAG=PersonServiceTest的过滤器,执行测试方法,就可以获得我们想要的信息了。



附:Person  JavaBean中的代码(id,name,age三个字段及其SettersGetters方法,重写父类toString方法)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值