Во-первых, вы действительно не должны загружать содержимое вашего файла в tableView:cellForRowAtIndexPath:
. Метод вызывается один раз для каждой ячейки: в конечном итоге вы загружаете XML-файл много раз.
TBXML
не поддерживает запросы XPath, поэтому вам придется циклически просматривать результаты.
Что-то вроде
NSMutableArray *cellTitlesBuffer = [NSMutableArray array];
TBXMLElement *locationNode = [TBXML childElementNamed:@"location" parentElement:rootXML];
if (locationNode) {
NSString *cellTitle = nil;
do {
TBXMLElement *woeidNode = [TBXML childElementNamed:@"CompanyName" parentElement:locationNode];
[cellTitlesBuffer addObject:[TBXML textForElement:woeidNode]];
} while (locationNode = locationNode->nextSibling);
}
Затем сохраните буфер заголовков в переменной класса (скажем, cellTitles) и в tableView:cellForRowAtIndexPath:
Cell.textLabel.text = [cellTitles objectAtIndex:indexPath.row];