Парсеры XML, используемые в iphone sdk - PullRequest
1 голос
/ 22 февраля 2011

Я новичок в разработке для iphone.Я проходил учебники по синтаксическому анализу XML, для которых используется NSXMLParser.Существуют ли другие парсеры, которые мы можем использовать для анализа XML.Как мы решаем, какой парсер использовать?

С уважением,
Камень

Ответы [ 7 ]

3 голосов
/ 22 февраля 2011

Стандартными синтаксическими анализаторами являются NSXMLParser или libxml на основе c.Но есть много сторонних парсеров.Посмотрите это сообщение в блоге , где рассмотрены и сравнены некоторые из самых популярных парсеров.

2 голосов
/ 22 февраля 2011

Я нашел много уроков и много постов по этой проблеме. Есть много учебников, которые не работают !!!!! я нашел это http://gigaom.com/apple/tutorial-build-a-simple-rss-reader-for-iphone/

и я понимаю, как работает NSXMLparser

2 голосов
/ 22 февраля 2011

Это пример кода от Apple .. Он показывает разницу между всеми доступными синтаксическими анализаторами XML ..

http://developer.apple.com/library/ios/#samplecode/XMLPerformance/Introduction/Intro.html

Для новичка это будет очень полезно ... Не стесняйтесьиспользовать это ..

2 голосов
/ 22 февраля 2011
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection
{
    [self parseXMLFile:xmlFile];
    unsigned char byteBuffer[[xmlFile length]];
    [xmlFile getBytes:byteBuffer];
    NSLog(@"Output: %s", (char *)byteBuffer);
    NSLog(@"Succeeded! Received %d bytes of data",[xmlFile length]);    
    [xmlFile release];
    xmlFile = [[NSMutableData data] retain];

}


- (void)parseXMLFile:(NSData *)adatok {
    if (adatok != nil) {
        BOOL success;
        if (addressParser) 
            [addressParser release];
        addressParser = [[NSXMLParser alloc] initWithData:adatok];
        [addressParser setDelegate:self];
        [addressParser setShouldResolveExternalEntities:YES];
        success = [addressParser parse]; 

    }
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {  here You enter the node }

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { here you get the content CDDATA}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { here you end node }

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

2 голосов
/ 22 февраля 2011

Лично, если вы используете XML и имеете доступ к каналу, я всегда конвертирую канал в формат plist. Это гораздо лучший формат для iPhone и он сэкономит вам массу времени и усилий.

Существует также https://github.com/robbiehanson/KissXML, который дает вам структуру, подобную отсутствующим классам NSXML. Это сделано таким образом, что если Apple когда-нибудь поместит эти классы в iOS SDK, это вообще не будет конфликтовать.

0 голосов
/ 22 ноября 2013

Проверьте эту ссылку для разбора xml parse

NSString *url=@"http://www.lancers.jp/work/search/.rss";

NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
NSDictionary *dict=[XMLReader dictionaryForXMLData:data error:nil];

Нажмите на эту ссылку

Демонстрационный код XML

0 голосов
/ 26 апреля 2013

Если вы собираетесь использовать HTML, стоит попробовать hpple .Он очень прост в использовании и скоро будет поддерживать полный XML.

...