Próbuję przeanalizować dane podrzędne, które są podkategoriami i pokazać je, ale będą wyświetlać tylko odpowiednią podkategorię kategorii nadrzędnej. Udało mi się przeanalizować dane elementu nadrzędnego, ale mam problem z analizą elementu potomnego.Uzyskiwanie danych elementu potomnego od jego odpowiednika rodzica
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"category"]){
dataCurrent = [dataFileHolder alloc];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
currentList = [[NSMutableString alloc] initWithString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"name"]){
dataCurrent.nameOfCat = currentList;
}
if ([elementName isEqualToString:@"description"]){
dataCurrent.descriptionOfCat = currentList;
}
if ([elementName isEqualToString:@"image"]) {
dataCurrent.imageLink = currentList;
}
if ([elementName isEqualToString:@"category"]) {
[listPopulated addObject:dataCurrent];
dataCurrent = nil;
currentList = nil;
}
}
i plik XML jest jak ten
<category>
<name>Food</name>
<description>food description</description>
<image> Link Here </image>
<sub_cat>
<sub_name>Sub name</sub_name>
<sub_desc>sub cat description</sub_desc>
<sub_image> Link </sub_image>
</sub_cat>
<sub_cat>
<sub_name>Sub name</sub_name>
<sub_desc>sub cat description</sub_desc>
<sub_image> Link </sub_image>
</sub_cat>
</category>
i badają o Event Driven XML Parsing a także znaleźć gud odwołanie od jednego z wątków xml-parse-only-certain-child-elements, ale w końcu im jeszcze dość mylić o XML i parsowanie. Być może potrzebuję terminu lamer. I chciałbym wiedzieć, jak wykonać część do analizowania.
Zrobiłem to, aż do tej części, im właśnie brakuje teraz jest przekazywanie danych podrzędnych, które są wewnątrz znacznika z mojego nadrzędnego kontrolera widoku do mojego kontrolera widoku podrzędnego. –
następnie utworzyć tablicę subcat i zapisać tę tablicę w dataDict przy użyciu klucza subcat. –
zobacz zaktualizowaną odpowiedź. Teraz będziesz mieć jedną dataDict w dataArray. z którego możesz uzyskać tablicę sub_cat przy użyciu klucza sub_cat. Następnie możesz przekazać go do kontrolera widoku. –