Инструмент ваш код; в частности, чуть выше строки, которая гласит ...
[directionTree setObject:directions forKey:@"directions"];
... (я удалил шальные =) попробуйте добавить ...
NSLog(@"setting directions to '%@'", directions);
Могу поспорить, вы увидите, что вышеперечисленное регистрируется несколько раз на элемент. В частности, новая строка между тегом и сама по себе является элементом, так же как текст в теге является элементом.
Так вот, вы могли бы продолжать идти по пути, пытаясь найти особый случай для того и другого, но это было бы неправильно.
Вам необходимо проанализировать XML как структурированный документ - как дерево узлов. В частности, вы должны где-то найти тег и затем захватить элемент, который висит под ним (это должно быть, IIRC, тип TEXT на языке XML - было какое-то время).
Или, что еще лучше, используйте один из API-интерфейсов синтаксического анализа XML в системе. NSXMLDocument сразу приходит на ум. Если вы работаете на iPhone (который не был указан в этом вопросе), вам нужно использовать NSXMLParser, а не NSXMLDocument, поскольку он недоступен.
Или, что еще лучше, поскольку это выглядит как довольно простая инкапсуляция XML в обычной схеме данных, используйте CoreData. CoreData идеально подходит для хранения такого рода информации. Если ваш XML-файл предназначен для обмена, вы не захотите использовать CoreData, поскольку XML-файл, который он создает, полностью соответствует его собственному дизайну.