Я только что потратил некоторое время на решение аналогичной проблемы (файлы Google KML). Возможно, ваша проблема связана с проблемой пространства имен. Когда вы устанавливаете сопоставления пространства имен, дайте пространству имен ключ, а затем префикс ваших селекторов в выражениях XPath с этим ключом, за которым следует двоеточие (:). В этом решении используются CXMLDocuments и CXMLElements из аккуратной библиотеки TouchXML .
Чтобы начать с простого примера, скажем, ваш XML был:
<books xmlns="http://what.com/ever">
<book>
<title>Life of Pi</title>
</book>
<book>
<title>Crime and Punishment</book>
</book
</books>
Вы бы выбрали все книги с:
// So, assuming you've already got the data for the XML document
CXMLDocument* xmldoc = [[CXMLDocument alloc] initWithData:xmlDocData options:0 error:nil];
NSDictionary *namespaceMappings = [NSDictionary dictionaryWithObjectsAndKeys:@"http://what.com/ever", @"nskey", nil];
NSError *error = nil;
NSArray *bookElements = [xmldoc nodesForXPath:@"/nskey:books/nskey:book" namespaceMappings:mappings error:&error];
Обратите внимание, что вам нужно ставить префикс перед каждым элементом, а не только над тем, где объявлено пространство имен.