-
Notifications
You must be signed in to change notification settings - Fork 0
/
ParsingXML.m
85 lines (69 loc) · 2.43 KB
/
ParsingXML.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// ParsingXML.m
// test
//
// Created by 李腾芳 on 16/10/28.
// Copyright © 2016年 李腾芳. All rights reserved.
//
#import "ParsingXML.h"
#import "GDataXMLNode.h"
@implementation ParsingXML {
GDataXMLDocument *_document;
NSDictionary *_dic;
}
- (instancetype)initWithData:(NSData *)data {
self = [super init];
if (self) {
NSError *error;
_document = [[GDataXMLDocument alloc]initWithData:data options:0 error:&error];
if (error) {
NSLog(@"warn:%@",error);
}
// NSLog(@"%@",_document.rootElement);
}
return self;
}
- (NSDictionary *)dic {
if (_dic == nil) {
if (_document.rootElement.name) {
// _dic = @{_document.rootElement.name:[self parsingELement:_document.rootElement]};
_dic = [self parsingELement:_document.rootElement];
}
}
// NSLog(@"%@",_dic);
return _dic;
}
- (NSDictionary *)parsingELement:(GDataXMLElement *)element {
if (element == nil) {
return nil;
}
// NSLog(@"%@",element);
NSMutableDictionary *dic = [NSMutableDictionary new];
// NSLog(@"%@",element.attributes);
for (GDataXMLElement *childElement in element.attributes) {
if ([childElement isKindOfClass:[GDataXMLElement class]]) {
dic[childElement.name] = childElement.stringValue;
}
}
if ([element.children.firstObject isKindOfClass:[GDataXMLElement class]]) {
for (GDataXMLElement *childElement in element.children) {
if (dic[childElement.name]) {
NSMutableDictionary *childDic = dic[childElement.name];
NSDictionary *otherDic = [self parsingELement:childElement];
NSMutableArray *array = @[childDic.allValues].mutableCopy;
[array addObject:otherDic.allValues];
dic[childElement.name] = array;
} else {
[dic addEntriesFromDictionary:[self parsingELement:childElement]];
// NSLog(@"%@",dic.allValues);
// NSLog(@"%@",dic.allKeys);
}
}
} else {
return [[NSMutableDictionary alloc]initWithObjects:@[element.stringValue] forKeys:@[element.name]];
}
NSMutableDictionary *resultDic = [[NSMutableDictionary alloc]initWithObjects:@[dic] forKeys:@[element.name]];
// NSLog(@"%@",resultDic);
return resultDic;
}
@end