封装工具类实现XMLPull解析

 

       首先上来就是类图

封装工具类实现XMLPull解析_第1张图片

       PullParserTool里面封装了Pull解析的一些过程,除了开始标签结束标签以外,其他代码都是Pull的常规写法,开始标签结束标签的处理主要交给实现XMLParserHelper的类来处理。我们看到PullParserTool中“有一个”XMLParserHelper的实例(Head First设计模式中:“有一个”比“是一个”好)。一旦代码执行到了开始标签结束标签的位置,就执行xmlParseHelper.xmlPullParserStart(parser)或者xmlParseHelper.xmlPullParserEnd(parser)。

        接着让XMLParseHelperFather这个类实现接口xmlParseHelper,父类什么也不做,定义一些子类的公共参数,考虑到子类以后会有公共的方法,所以才XMLParseHelperFather作为一个父类存在。

        XMLParseHelperFather的子类实现具体的解析操作,以XMLParseHelperForBooks为例,XMLParseHelperForBooks的解析格式如下,

封装工具类实现XMLPull解析_第2张图片

也就是PullParserTool中,一旦代码执行到了开始标签结束标签的位置,其实执行的是XMLParseHelperFather的子类XMLParseHelperForBooks的xmlPullParserStart(parser)或者xmlPullParserEnd(parser)方法。执行完毕后,通过getData可以得到一个Object类型的数据,这个数据通过转型就是我们要的Book的集合。

        当出现更多要解析的类型的时候,比如XMLParseHelperForPersons,只需要在XMLParseHelperForPersons中实现具体的解析操作,就可以得到对应的Person的集合,这样就实现了模块化,不管以后新增多少XML文件格式,只要让XMLParseHelperFather的子类去实现就好。

最后附上git地址:https://github.com/WhyAllAIX/PullParserTool/blob/master/XMLpull%E8%A7%A3%E6%9E%90%E5%92%8CXML%E5%BA%8F%E5%88%97%E5%8C%96.rar

你可能感兴趣的:(封装工具类实现XMLPull解析)