У меня есть следующая схема XML, которую я пытаюсь перебрать:
<routes>
<route>
<group>Group Name - Will be iPhone section name</group>
<item>
<name>Route Name - Will be iphone cell lable</name>
<url>Route URL - View Did select lable</url>
</item>
<item>
<name>Route Name - Will be iphone cell lable</name>
<url>Route URL - View Did select lable</url>
</item>
<item>
<name>Route Name - Will be iphone cell lable</name>
<url>Route URL - View Did select lable</url>
</item>
<item>
<name>Route Name - Will be iphone cell lable</name>
<url>Route URL - View Did select lable</url>
</item>
</route>
<route>
<group>Group 2 - Will be iPhone section name</group>
<item>
<name>Route Name - Will be iphone cell lable</name>
<url>Route URL - View Did select lable</url>
</item>
<item>
<name>Route Name - Will be iphone cell lable</name>
<url>Route URL - View Did select lable</url>
</item>
</route>
</routes>
Теперь у большинства из них довольно много записей в элементе - и узел Group будет заголовком раздела для UITableView
Вот как я (неправильно) анализирую XML на данный момент:
(Вот объявления xNode_:)
static NSString *xNode_route =@"//route";
static NSString *xNode_group =@"group";
static NSString *xNode_item= @"//item";
static NSString *xNode_name = @"name";
static NSString *xNode_url = @"url";
Вот код разбора:
CXMLDocument *doc = [[CXMLDocument alloc] initWithData:dataReply options:0 error:nil];
NSArray *route = [doc nodesForXPath:xNode_route error:nil];//Root node
for (CXMLElement *item in route)
{
AssessObject *newobj2 = [[AssessObject alloc] init];
NSArray *arryGroup = [item elementsForName:xNode_group];
for(CXMLElement *assGroup in arryGroup)
{
newobj2.assGroup = assGroup.stringValue;
NSLog(@"Assessment Group: %@", assGroup.stringValue);
}
[groupArray addObject:newobj2];
}
NSArray *items = [doc nodesForXPath:xNode_item error:nil];//Root node
for (CXMLElement *item in items)
{
AssessObject *newobj = [[AssessObject alloc] init];
NSArray *arryName = [item elementsForName:xNode_name];
for(CXMLElement *assName in arryName)
{
newobj.assName = assName.stringValue;
NSLog(@"Assessment Name: %@", assName.stringValue);
}
NSArray *arryUrl = [item elementsForName:xNode_url];
for(CXMLElement *assUrl in arryUrl)
{
newobj.assUrl = assUrl.stringValue;
NSLog(@"Assessment URL: %@", assUrl.stringValue);
}
[totalArray addObject:newobj];
}
}
В данный момент он просматривает все элементы x количество групп, поэтому циклы где-то некорректны. Так что, если есть 6 групп, он показывает дубликаты предметов 6 раз.
Итак, это часть первая, часть вторая, на самом деле, как мне разделить массивы на группы и получить правильные элементы внутри них?