какой подходящий парсер xml в iOS? - PullRequest
1 голос
/ 29 февраля 2012

Я хочу проанализировать следующий XML-файл,

enter image description here enter image description here Какой самый лучший xml-парсер iOS. Я хочу разобрать его как библиотеку SBJON, я имею в виду, я хочу проанализировать его динамически. Например, сохраните все данные элемента POSITION_DATA в NSMutableDictionary, и этот словарь следует сохранить в NSMutableArray.

Если используется библиотека SBJON, то я получу первый массив всех данных, содержащих XML-файл, затем я получу для извлечения соответствующих данных из массива.

Могу ли я сделать это в iOS, используя target-C. Я уже использую библиотеку TBXML, но я думаю, что она не подходит для данного формата файла XML. Также я использую библиотеку TouchXML, но она дает мне ошибку времени компиляции "touchxml library и получаю ошибку libxml / tree.h нет такого файла или каталога".

Пожалуйста, помогите мне избавиться от этой нелепой проблемы с синтаксическим анализом.

Спасибо, РРК

Ответы [ 6 ]

2 голосов
/ 29 февраля 2012

Посмотрите документацию для NSXMLParser. Включено в iOS. Вы передаете данные XML в его экземпляр, а затем становитесь его делегатом и затем указываете их на анализ.

NSXMLParser * parser = [[NSXMLParser alloc] initWithData:xmlData];
parser.delegate = self;
[parser parse];

Затем реализовать

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

Эти три метода вызываются при открытии тега, встречаются данные внутри тега и при закрытии тега. Вы можете прослушивать нужные теги в XML, сравнивая строки с аргументом elementName и сохраняя данные в объектах по своему усмотрению.

Посмотрите документацию от Apple для полной детализации реализации. Зачем использовать сторонний инструментарий, если есть встроенный класс, который делает то, что вам нужно?

2 голосов
/ 29 февраля 2012

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

Apple предоставляет документацию здесь .Пример Apple SeismicXML является хорошим примером парсинга фона.

1 голос
/ 29 февраля 2012

https://github.com/TouchCode/TouchXML

Вы поблагодарите меня позже.Я терпеть не могу NSXMLParser.

РЕДАКТИРОВАТЬ: Обязательно следуйте инструкциям по установке, включенным в папку Docs загрузки.Покажет вам, как избавиться от ошибок lib xml.

0 голосов
/ 05 июля 2016

NSXMLParser - это стандартный инструмент синтаксического анализа XML.

0 голосов
/ 29 февраля 2012

Здесь у вас есть простой и отличный Анализатор XML для NSDictionary

0 голосов
/ 29 февраля 2012

Я также предлагаю прочитать о GDataXML. Это легко и очень быстро. Здесь больше информации о как читать и писать xml-documents-with-gdataxml .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...