Как работает NSXMLParser - PullRequest
       9

Как работает NSXMLParser

0 голосов
/ 04 августа 2011

Я новичок в разработке xcode.Я пытаюсь реализовать вызов веб-службы для извлечения значений с сервера и отображения его в табличном представлении. Я получил пример кода из сети и кое-как, как я могу заставить его работать.но все же я не знаю, как парсер перебирает узлы xml.Кто-нибудь может мне помочь узнать, как работает xml-парсер в xcode и , как он проходит через все узлы без цикла for ?

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

На самом деле есть пять методов делегата

1.didstartdocument

2.didstartelement

3.Найдено символов

4.didendelement

5.didenddocument

В этом первом методе для запуска документа. Второй метод - если найдены какие-либо начальные элементы, то, если у начального элемента есть данные, он переходит к найденным символам. После этого он переходит к элементу didendelement. После этого он снова переходит к didstartelement.Это происходит неоднократно. Если документ заканчивается, он переходит к документу didenddocment.

0 голосов
/ 04 августа 2011

Это очень просто, для правильного потока вы можете просто установить точку останова в его методе, а затем проверить значение всех параметров, которые вы поймете. Тем не менее, для более подробной информации рассмотрим эти методы для установки точек останова

[self parseXMLFileAtURL:path];

- (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

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

0 голосов
/ 04 августа 2011

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

...