Разработка iPhone - XMLParser против libxml2 против TouchXML - PullRequest
32 голосов
/ 02 января 2009

Я не могу найти сравнение этих методов разбора. Какой из них наиболее часто используется?

С уважением. Мустафа

Ответы [ 3 ]

58 голосов
/ 02 января 2009

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 .

14 голосов
/ 08 июля 2010

См. XML-учебник для iOS: как выбрать лучший XML-парсер для вашего iPhone-проекта :

Существует множество вариантов разбора XML на iPhone. IPhone SDK поставляется с двумя различными библиотеками на выбор, и есть несколько популярных сторонних библиотек, таких как TBXML, TouchXML, KissXML, TinyXML и GDataXML. Как разработчику выбрать лучший синтаксический анализатор XML для своего проекта?

Недавно я рассмотрел различные варианты и в итоге расширил образец XMLPerformance от Apple, чтобы опробовать каждую из вышеперечисленных библиотек, чтобы узнать, как они работают, и сравнить их производительность. Я подумал, что поделюсь тем, что я узнал до сих пор, другим, которые могут искать лучшую библиотеку XML для своего проекта iPhone.

В этом уроке по XML мы подробно рассмотрим функции и производительность наиболее популярных библиотек iPhone, объясним, как выбирать между ними, а также приведем пример проекта, показывающего, как читать данные XML с использованием каждой из вышеуказанных библиотек ...

2 голосов
/ 24 февраля 2013

Есть еще одна хорошая библиотека для разбора XML на основе блоков - RaptureXML ( github ) от ZaBlanc , она предоставляет Objective-C API поверх libxml2, я определенно рекомендую попробовать ее .

...