XMLParser可以流式地解析XML数据,下面是通过XMLParser进行自动解析的方案,此方案可以把XML数据结构自动转换为相应的对象树,也可以实现把XML数据自动解析为由字典、数组、基本类型组成的数据结构,就像JSONSerialization解析JSON数据一样,自动解析成节点树。
自动解析XML数据的步骤如下:
- 为需要自动解析的标签创建相应的类型,并且每个类型都有一个指向父节点的引用属性parent;而且每个类型要实现XMLParserDelegate协议;
- 开始解析后,当遇到开始标签时,创建相应类型的实例A,并设置XMLParser实例的代理为这个实例A,并根据标签属性对实例A做相应的配置;
- 当遇到标签内容时,配置相应的属性到当前实例A;
- 当遇到结束标签时,设置XMLParser实例的代理为当前实例的父节点parent;
备注:
通过此方案也把XML数据自动解析为由字典、数组、基本类型组成的数据结构,只不过第1步所针对的类型是数组和字典而已,可以通过分类让数组和字典实现XMLParserDelegate协议,并按照第2、3、4步实现具体的协议方法的逻辑;
至于如何在分类中给字典和数组添加parent属性,可以参考我的另外2篇文章:
IOS在分类中实现添加属性的效果-非关联版
IOS方法调换-非运行时版