Ответ 1
NSXMLParser является парсером SAX, что означает, что он проходит через XML-документ и сообщает вам (через методы делегата) различные события (например, запуск xml node, поиск атрибутов и т.д.). Этот тип обработки 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.