OC-Xmlファイル解析

94093 ワード

今回の解析では、Googleが提供するオープンソースプラグイン:GDataXmlNodeによるxmlファイルの解析を使用します.
GDataXmlNodeファイルのインポートとXcodeの構成:http://blog.csdn.net/hmt20130412/article/details/24042499
 
タイトル:以下のXmlファイルを解析し、都市の中国語名を入力することで、対応する都市の頭文字を取得します.例えば、入力常徳出力c
xmlファイル:

  1 <?xml version="1.0" encoding="UTF-8"?>

  2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

  3 <plist version="1.0">

  4 <dict>

  5     <key>a</key>

  6     <array>

  7         <string>  </string>

  8         <string>  </string>

  9         <string>  </string>

 10         <string>  </string>

 11     </array>

 12     <key>b</key>

 13     <array>

 14         <string>  </string>

 15         <string>  </string>

 16         <string>  </string>

 17         <string>  </string>

 18         <string>  </string>

 19         <string>  </string>

 20         <string>  </string>

 21     </array>

 22     <key>c</key>

 23     <array>

 24         <string>  </string>

 25         <string>  </string>

 26         <string>  </string>

 27         <string>  </string>

 28         <string>  </string>

 29         <string>  </string>

 30         <string>  </string>

 31         <string>  </string>

 32         <string>  </string>

 33         <string>  </string>

 34         <string>  </string>

 35         <string>  </string>

 36         <string>  </string>

 37         <string>  </string>

 38         <string>  </string>

 39         <string>  </string>

 40     </array>

 41     <key>d</key>

 42     <array>

 43         <string>  </string>

 44         <string>  </string>

 45         <string>  </string>

 46         <string>  </string>

 47         <string>  </string>

 48         <string>  </string>

 49         <string>  </string>

 50         <string>  </string>

 51     </array>

 52     <key>e</key>

 53     <array>

 54         <string>    </string>

 55         <string>  </string>

 56     </array>

 57     <key>f</key>

 58     <array>

 59         <string>  </string>

 60         <string>  </string>

 61         <string>  </string>

 62         <string>  </string>

 63         <string>  </string>

 64     </array>

 65     <key>g</key>

 66     <array>

 67         <string>  </string>

 68         <string>  </string>

 69         <string>  </string>

 70         <string>  </string>

 71     </array>

 72     <key>h</key>

 73     <array>

 74         <string>   </string>

 75         <string>  </string>

 76         <string>   </string>

 77         <string>  </string>

 78         <string>  </string>

 79         <string>  </string>

 80         <string>  </string>

 81         <string>  </string>

 82         <string>  </string>

 83         <string>  </string>

 84         <string>  </string>

 85         <string>  </string>

 86         <string>  </string>

 87         <string>  </string>

 88         <string>  </string>

 89         <string>    </string>

 90         <string>  </string>

 91         <string>  </string>

 92         <string>  </string>

 93         <string>   </string>

 94         <string>  </string>

 95         <string>  </string>

 96     </array>

 97     <key>j</key>

 98     <array>

 99         <string>  </string>

100         <string>  </string>

101         <string>  </string>

102         <string>  </string>

103         <string>  </string>

104         <string>  </string>

105         <string>  </string>

106         <string>  </string>

107         <string>  </string>

108         <string>  </string>

109         <string>  </string>

110         <string>  </string>

111         <string>  </string>

112         <string>  </string>

113         <string>  </string>

114         <string>  </string>

115         <string>  </string>

116     </array>

117     <key>k</key>

118     <array>

119         <string>  </string>

120         <string>  </string>

121         <string>  </string>

122         <string>  </string>

123     </array>

124     <key>l</key>

125     <array>

126         <string>  </string>

127         <string>  </string>

128         <string>  </string>

129         <string>  </string>

130         <string>   </string>

131         <string>  </string>

132         <string>  </string>

133         <string>  </string>

134         <string>  </string>

135         <string>  </string>

136         <string>  </string>

137         <string>  </string>

138         <string>  </string>

139         <string>  </string>

140         <string>  </string>

141         <string>  </string>

142         <string>  </string>

143         <string>  </string>

144         <string>  </string>

145     </array>

146     <key>m</key>

147     <array>

148         <string>  </string>

149         <string>  </string>

150         <string>  </string>

151     </array>

152     <key>n</key>

153     <array>

154         <string>  </string>

155         <string>  </string>

156         <string>  </string>

157         <string>  </string>

158         <string>  </string>

159         <string>  </string>

160         <string>  </string>

161         <string>  </string>

162         <string>  </string>

163     </array>

164     <key>p</key>

165     <array>

166         <string>  </string>

167         <string>  </string>

168         <string>   </string>

169         <string>  </string>

170         <string>  </string>

171     </array>

172     <key>q</key>

173     <array>

174         <string>  </string>

175         <string>  </string>

176         <string>  </string>

177         <string>   </string>

178         <string>  </string>

179         <string>  </string>

180         <string>    </string>

181         <string>  </string>

182         <string>  </string>

183         <string>  </string>

184     </array>

185     <key>r</key>

186     <array>

187         <string>  </string>

188     </array>

189     <key>s</key>

190     <array>

191         <string>  </string>

192         <string>  </string>

193         <string>  </string>

194         <string>  </string>

195         <string>  </string>

196         <string>  </string>

197         <string>  </string>

198         <string>  </string>

199         <string>  </string>

200         <string>  </string>

201         <string>  </string>

202         <string>   </string>

203         <string>  </string>

204         <string>  </string>

205         <string>  </string>

206         <string>  </string>

207         <string>  </string>

208         <string>  </string>

209     </array>

210     <key>t</key>

211     <array>

212         <string>  </string>

213         <string>  </string>

214         <string>  </string>

215         <string>  </string>

216         <string>  </string>

217         <string>  </string>

218         <string>  </string>

219         <string>  </string>

220         <string>  </string>

221     </array>

222     <key>w</key>

223     <array>

224         <string>  </string>

225         <string>  </string>

226         <string>  </string>

227         <string>  </string>

228         <string>  </string>

229         <string>  </string>

230         <string>  </string>

231         <string>    </string>

232         <string>  </string>

233         <string>  </string>

234     </array>

235     <key>x</key>

236     <array>

237         <string>  </string>

238         <string>  </string>

239         <string>  </string>

240         <string>  </string>

241         <string>  </string>

242         <string>  </string>

243         <string>  </string>

244         <string>  </string>

245         <string>  </string>

246         <string>  </string>

247         <string>  </string>

248         <string>  </string>

249         <string>  </string>

250         <string>  </string>

251     </array>

252     <key>y</key>

253     <array>

254         <string>  </string>

255         <string>  </string>

256         <string>  </string>

257         <string>  </string>

258         <string>  </string>

259         <string>  </string>

260         <string>  </string>

261         <string>  </string>

262         <string>  </string>

263         <string>  </string>

264         <string>  </string>

265         <string>  </string>

266         <string>  </string>

267         <string>  </string>

268         <string>  </string>

269         <string>  </string>

270         <string>  </string>

271         <string>  </string>

272     </array>

273     <key>z</key>

274     <array>

275         <string>  </string>

276         <string>  </string>

277         <string>  </string>

278         <string>  </string>

279         <string>  </string>

280         <string>  </string>

281         <string>  </string>

282         <string>  </string>

283         <string>  </string>

284         <string>  </string>

285         <string>  </string>

286         <string>  </string>

287         <string>  </string>

288     </array>

289 </dict>

290 </plist>

View Code
クラスXml解析クラスが新規作成されました:ParseAlphAndCityName.h
 1 #import <Foundation/Foundation.h>

 2 

 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 *)xmlFilePath

18 {

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<len; i++) {

38         //            

39         NSString *alString = [[keyArray objectAtIndex:i] stringValue];

40         

41         //              

42         NSMutableArray *cityChinaNames = [[NSMutableArray alloc] init];

43         //    array      string    

44         NSArray *elementsValue = [[arrayArray objectAtIndex:i] elementsForName:@"string"];

45         for (GDataXMLElement *item in elementsValue) {

46             //           

47             [cityChinaNames addObject:[item stringValue]];

48         }

49         

50         //                    

51         [self.alphAndCityNameList setObject:cityChinaNames forKey:alString];

52     }

53 }

54 

55 

56 + (void)test:(NSString *)xmlFilePath

57 {

58     char cityName[100] = {};

59     scanf("%s",cityName);

60     

61     ParseAlphAndCityName *parseXml = [[ParseAlphAndCityName alloc] init];

62     [parseXml parseXml:xmlFilePath];

63     

64     for (NSString *key in parseXml.alphAndCityNameList) {

65         NSArray *citys = [parseXml.alphAndCityNameList objectForKey:key];

66         if ([citys containsObject:[NSString stringWithUTF8String:cityName]]) {

67             NSLog(@"%@",key);

68         }

69     }

70     

71 }

72 

73 @end

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;

}