NSXMLParser - это синтаксический анализатор SAX , то есть он проходит по документу XML и информирует вас (с помощью методов делегирования) о различных событиях (таких как запуск узла XML, поиск атрибутов и т. Д.). Этот тип обработки XML лучше всего подходит для анализа больших документов и когда вам нужно только извлечь небольшое количество данных из большого файла.
В отличие от SAX модель DOM , в которой все дерево XML анализируется в памяти (обычно с помощью одного вызова), а затем вы можете свободно исследовать документ XML из представленного API. Как правило, с этим гораздо проще работать, поскольку вы получаете произвольный доступ ко всему XML-документу.
Итак, первый вопрос, на который нужно ответить, это вопрос SAX vs DOM. Если вы беспокоитесь о больших файлах XML (скажем, 10 МБ или более), вы можете использовать SAX. Если вы работаете с небольшими XML-файлами или с крошечными XML-фрагментами, часто гораздо проще использовать DOM.
Если вы действительно решили использовать DOM, у вас есть несколько вариантов.
libxml2 - это очень мощный API, написанный на C. Он в основном предназначен для использования в стиле DOM, но имеет другие опции, если вы уже знакомы с ним. Но, как написано в C, это не часто привлекательно для тех, кто более знаком с Objective-C (объекты и авто-релиз), или для тех, кто пришел из мира .Net. Таким образом, существует потребность / желание иметь встроенную оболочку Objective-C вокруг libxml, чтобы сделать ее более знакомой. TouchXML - одна из таких оболочек. Это хорошо работает, если вам нужен только доступ для чтения к XML. Если вы хотите изменить XML или создать фрагменты / документы XML с нуля, я бы рекомендовал перейти с KissXML .