我正在通过API下载Google天气。我解析时遇到了问题。
使用NSXMLParserDelegate,它找到元素“forecast_conditions”,但我似乎无法提取它的内容。解析器似乎认为“高”和“低”等是单独的元素。
这是我试图解析的一个元素:
<forecast_conditions><day_of_week data="Sun"/><low data="20"/><high data="38"/><icon data="/ig/images/weather/sunny.gif"/><condition data="Clear"/></forecast_conditions>
我很惊讶......
`- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"foundCharacters string: %@",string);
}`
也没有返回任何内容。我以为这解析了元素的内容
帮助表示赞赏。
答案 0 :(得分:0)
事实证明,解析器会自动创建“attributeDict”字典。循环遍历elementNames,您只需要调用[attributeDict objectForKey:@“data”]。示例如下。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
// current conditions
if ([elementName isEqualToString:@"current_conditions"]) {
currentConditions = [[NSMutableString alloc] init];
temp_f = [[NSMutableString alloc] init];
temp_c = [[NSMutableString alloc] init];
humidity = [[NSMutableString alloc] init];
currentIcon = [[NSMutableString alloc] init];
wind_condition = [[NSMutableString alloc] init];
}
if ([elementName isEqualToString:@"condition"]) {
[currentConditions appendString:[attributeDict objectForKey:@"data"]];
}
if ([elementName isEqualToString:@"temp_f"]) {
[temp_f appendString:[attributeDict objectForKey:@"data"]];
}
if ([elementName isEqualToString:@"temp_c"]) {
[temp_c appendString:[attributeDict objectForKey:@"data"]];
}
if ([elementName isEqualToString:@"humidity"]) {
[humidity appendString:[attributeDict objectForKey:@"data"]];
}
if ([elementName isEqualToString:@"currentIcon"]) {
[currentIcon appendString:[attributeDict objectForKey:@"data"]];
}
if ([elementName isEqualToString:@"wind_condition"]) {
[wind_condition appendString:[attributeDict objectForKey:@"data"]];
}