Привет, ребята, у меня вопрос с разбором xml.
Обычно стиль файла XML выглядит следующим образом:
<person>
<name> abc </name>
<age> 19 </age>
<gender> male </gender>
</person>
Таким образом, мы используем
elementName isEqualToString:@"name"
elementName isEqualToString:@"age"
elementName isEqualToString:@"gender"
для идентификации элемента.
Теперь я сталкиваюсь со стилем XML-файла, как:
<person>
<element type="name">abc</element>
<element type="age">19</element>
<element type="gender">male</element>
</person>
В этой ситуации мы не можем использовать
elementName isEqualToString:@"name"
Итак, я попытался использовать
if ([elementName isEqualToString:@"element"]) {
if ([[attributeDict objectForKey:@"type"] isEqualToString:@"name"){
.....
}
}
, чтобы идентифицировать «имя», но оно не дало мне никакого значения, ничего, если бы я попытался получить значение «имени».
Итак, у кого-нибудь есть предложения по решению этой проблемы? спасибо
PS: вот часть моего кода
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict {
if ( [elementName isEqualToString:@"area"]) {
if ([[attributeDict objectForKey:@"type"] isEqualToString:@"location"]) {
NSString *description = [attributeDict objectForKey:@"description"];
NSArray *lineEntry = [[NSArray alloc] initWithObjects:description,nil ];
NSArray *lineKeys = [[NSArray alloc] initWithObjects:@"description",nil];
NSDictionary *dictItem = [[NSDictionary alloc] initWithObjects:lineEntry forKeys:lineKeys];
[lineKeys release];
[lineEntry release];
[dataLoad addObject:dictItem];
[dictItem release];
}
}
if ([elementName isEqualToString:@"forecast-period"]) {
NSString *index = [attributeDict objectForKey:@"index"];
NSString *time = [attributeDict objectForKey:@"start-time-local"];
NSArray *indexEntry = [[NSArray alloc] initWithObjects:index,time,nil];
NSArray *indexKey = [[NSArray alloc] initWithObjects:@"index",@"start-time-local",nil];
NSDictionary *dicIndex = [[NSDictionary alloc] initWithObjects:indexEntry forKeys:indexKey];
[indexEntry release];
[indexKey release];
[weatherLoad addObject:dicIndex];
[dicIndex release];
}
}
это работало нормально с этими двумя частями, но это не работает, если я пытаюсь получить «прогноз_код_кода», «воздух_температура_минимум», «воздух_температура_максимум», «точный».
<forecast-period index="1" start-time-local="2010-11-19T00:00:00+11:00" end-time-local="2010-11-20T00:00:00+11:00" start-time-utc="2010-11-18T13:00:00Z" end-time-utc="2010-11-19T13:00:00Z">
<element type="forecast_icon_code">1</element>
<element type="air_temperature_minimum" units="Celsius">12</element>
<element type="air_temperature_maximum" units="Celsius">24</element>
<text type="precis">Sunny.</text>
</forecast-period>
Есть предложения? Кстати, весь XML-файл находится здесь: ftp: //ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml