本次解析使用的由Google提供的一个开源插件:GDataXmlNode对xml文件的解析。
导入GDataXmlNode文件和配置Xcode :http://blog.csdn.net/hmt20130412/article/details/24042499
题目:解析如下Xml文件,通过输入城市中文名,获取对应城市的首字母。 例如:输入常德 输出c
xml文件:
1 2 34 5 290a 67 12安吉 8安庆 9鞍山 10澳门 11b 1314 22保定 15宝鸡 16包头 17北海 18北京 19蚌埠 20滨州 21c 2324 41沧州 25长春 26常德 27长乐 28长沙 29常熟 30常州 31潮阳 32潮州 33承德 34成都 35郴州 36重庆 37滁州 38慈禧 39从化 40d 4243 52大连 44丹东 45大庆 46大同 47德阳 48德州 49东莞 50东营 51e 5354 57鄂尔多斯 55鄂州 56f 5859 65奉化 60佛山 61抚顺 62阜阳 63福州 64g 6667 72赣州 68广州 69桂林 70贵阳 71h 7374 97哈尔滨 75海口 76海拉尔 77邯郸 78杭州 79合肥 80鹤岗 81衡阳 82鹤山 83河源 84花都 85淮安 86淮北 87淮南 88黄石 89呼和浩特 90惠东 91惠阳 92惠州 93葫芦岛 94湖州 95怀化 96j 9899 117江都 100江门 101姜堰 102江阴 103焦作 104嘉兴 105揭阳 106吉林 107济南 108荆门 109荆沙 110金华 111济宁 112晋江 113晋中 114锦州 115九江 116k 118119 124开封 120开平 121昆明 122昆山 123l 125126 146莱芜 127莱西 128廊坊 129兰州 130连云港 131聊城 132列东 133醴陵 134临汾 135临沂 136丽水 137浏阳 138柳州 139龙岩 140六安 141陆丰 142漯河 143洛阳 144泸州 145m 147148 152茂名 149梅州 150绵阳 151n 153154 164南昌 155南充 156南京 157南宁 158南平 159南通 160南阳 161内江 162宁波 163p 165166 172盘锦 167番禺 168平顶山 169莆田 170濮阳 171q 173174 185启东 175青岛 176清远 177秦皇岛 178钦州 179琼海 180齐齐哈尔 181全国 182泉州 183衢州 184r 186187 189日照 188s 190191 210三河 192三亚 193上海 194上虞 195汕头 196汕尾 197韶关 198绍兴 199邵阳 200沈阳 201深圳 202石家庄 203石狮 204十堰 205寿光 206四会 207随州 208苏州 209t 211212 222泰安 213台山 214太原 215泰州 216台州 217塘沽 218唐山 219天津 220铜陵 221w 223224 235潍坊 225威海 226渭南 227温州 228武汉 229芜湖 230吴江 231乌鲁木齐 232无锡 233梧州 234x 236237 252厦门 238西安 239襄樊 240香港 241湘潭 242咸宁 243咸阳 244兴宁 245邢台 246西宁 247新乡 248宣城 249许昌 250徐州 251y 253254 273盐城 255阳江 256阳泉 257阳朔 258扬州 259烟台 260宜昌 261银川 262英德 263义务 264宜兴 265仪征 266永康 267岳阳 268云浮 269玉林 270玉溪 271余姚 272z 274275 289湛江 276肇庆 277招远 278郑州 279镇江 280中山 281周口 282舟山 283珠海 284诸暨 285株洲 286淄博 287自贡 288
新建了一个类Xml解析类:ParseAlphAndCityName.h
1 #import2 3 @interface ParseAlphAndCityName : NSObject 4 { 5 NSMutableDictionary *_alphAndCityNameList; 6 } 7 8 @property (retain,nonatomic)NSMutableDictionary *alphAndCityNameList; 9 10 11 - (id)init;12 13 14 - (void)parseXml:(NSString *)xmlFilePath;15 16 17 + (void)test:(NSString *)xmlFilePath;18 19 @end
ParseAlphAndCityName.m
最主要的是parseXml:(NSString *)xmlFilePath;方法。利用了主流的对xml的解析方法。
不多说:看代码,已经注释的很清楚了。
1 #import "ParseAlphAndCityName.h" 2 #import "GDataXMLNode.h" 3 4 5 @implementation ParseAlphAndCityName 6 7 -(id)init 8 { 9 if (self = [super init]) {10 self->_alphAndCityNameList = [[NSMutableDictionary alloc] init];11 }12 13 return self;14 }15 16 17 - (void)parseXml:(NSString *)xmlFilePath18 {19 //将xml文件读取称二进制对象20 NSData *xmlData = [[NSData alloc] initWithContentsOfFile:xmlFilePath];21 //获取document对象,xml文档对象22 GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:nil];23 //获取根节点对象24 GDataXMLElement *rootElement = [document rootElement];25 26 //获取指定路径的所有节点 返回值为数组对象27 GDataXMLElement *dict = [[rootElement nodesForXPath:@"./dict" error:nil] objectAtIndex:0];28 //获取当前节点dict下的所有名为key节点的值29 NSArray *keyArray = [dict elementsForName:@"key"];30 31 //获取指定路径所有的array节点 返回值为数组对象32 NSArray *arrayArray = [rootElement nodesForXPath:@"./dict/array" error:nil];33 34 NSInteger len = [keyArray count];35 36 //遍历37 for (NSInteger i=0; i
main.m文件
#import "ParseAlphAndCityName.h"#define XmlFilePath @"/Users/qianfeng/Desktop/day23_OC13_xml文件/day23_OC13_XML城市解析_练习/qfile.xml"int main(int argc, const char * argv[]) { @autoreleasepool { [ParseAlphAndCityName test:XmlFilePath]; } return 0;}