OC-Xmlファイル解析
94093 ワード
今回の解析では、Googleが提供するオープンソースプラグイン:GDataXmlNodeによるxmlファイルの解析を使用します.
GDataXmlNodeファイルのインポートとXcodeの構成:http://blog.csdn.net/hmt20130412/article/details/24042499
タイトル:以下のXmlファイルを解析し、都市の中国語名を入力することで、対応する都市の頭文字を取得します.例えば、入力常徳出力c
xmlファイル:
View Code
クラスXml解析クラスが新規作成されました:ParseAlphAndCityName.h
ParseAlphAndCityName.m
最も主要なのはparseXml:(NSString*)xmlFilePath;方法.主流のxmlに対する解析法を利用した.
コードを見て、もうはっきり注釈しました.
main.mファイル
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;
}