Hallo iedereen,
Ik ben op dit moment bezig met data te parsen uit een xml bestand. Deze gebruikt de volgende code:
De parser zet de data in een dictionary en slaat al deze dictionaries in een array op. Het probleem is dat de elements niets als key worden gebruikt in de dictionary. Dus als wij bijvoorbeeld alleen het adres willen ophalen uit de dictionary is dit niet mogelijk. Ik snap dat het op dit moment niet werkt als ik de code bekijk.
Bij foundcharacters zet ie namelijk alle data in 1 string. En bij didEndElement zet hij deze string in de dictionary met de currentElement key (wat op dat moment coordinates is). De logica hierachter snap ik zover. Maar op wat voor een manier kan ik zorgen dat de parser bij iedere entry in de dictionary de corresponderende element naam als key gebruikt.
Alvast vriendenlijk bedankt!
Ik ben op dit moment bezig met data te parsen uit een xml bestand. Deze gebruikt de volgende code:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ currentElement = [elementName copy]; if ([elementName isEqualToString:@"Placemark"]) { placemarkData = [[NSMutableDictionary alloc] init]; currentTitle = [[NSMutableString alloc] init]; } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ if ([currentElement isEqualToString:@"name"] || [currentElement isEqualToString:@"address"] || [currentElement isEqualToString:@"coordinates"]) [currentTitle appendString:string]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"Placemark"]) { [placemarkData setObject:currentTitle forKey:currentElement]; [Placemarks addObject:[placemarkData copy]]; NSLog(@"adding story: %@", currentElement); } |
code:
1
2
3
4
5
| <Placemark> <name>Maastricht</name> <address>Grote Staat, 18</address> <coordinates>4.691330,50.849876</coordinates> </Placemark> |
De parser zet de data in een dictionary en slaat al deze dictionaries in een array op. Het probleem is dat de elements niets als key worden gebruikt in de dictionary. Dus als wij bijvoorbeeld alleen het adres willen ophalen uit de dictionary is dit niet mogelijk. Ik snap dat het op dit moment niet werkt als ik de code bekijk.
Bij foundcharacters zet ie namelijk alle data in 1 string. En bij didEndElement zet hij deze string in de dictionary met de currentElement key (wat op dat moment coordinates is). De logica hierachter snap ik zover. Maar op wat voor een manier kan ik zorgen dat de parser bij iedere entry in de dictionary de corresponderende element naam als key gebruikt.
Alvast vriendenlijk bedankt!