www.www.zaachi.com »  Blog/Vývoj pro iPhone  »  Vývoj aplikací pro iPhone: XML parser with NSXMLParser

Vývoj aplikací pro iPhone: XML parser with NSXMLParser



Parser XML v iPhone pomoci NSXMLParser pro rozparsování jednoduchého XML dokumentu.

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

Vytvoříme si jednoduchý program, který bude schopný načíst XML z webového serveru, rozparsovat jej a zobrazit výsledek v konzoli.

Ve vytvořeném projektu můžete využít kteroukoli třídu. Nejprve si upravíme .h soubor, do kterého musíme přidat delegate class pro NSXMLParser. Upravíme si interface do tvaru:

@interface MyClass : NSObject  {

V kódu může být NSObject zastoupen jiným rozhraním, takže kódem můžete pouze rozšířit stávající aplikaci.

Jako další si do rozhraní dopíšeme metody pro zpracování XML, které bude NSXNLParser volat

//nacteni XML a vytvoreni parseru
- (void)parseXMLFileAtURL;
//zacatek parsovani dokoumentu
- (void)parserDidStartDocument:(NSXMLParser *)parser;
//zacatek elementu
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;
//konec elementu
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
//nalezene znaky uvnitr elementu
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;

V posledním kroku musíme dopsat jednotlivé metody pro parser v .m souboru.

Začneme metodou parseXMLFileAtURL, která je stěžejní:

- (void)parseXMLFileAtURL
{
    //vytvori novou URL adresu, smerujici na XML
    NSURL *xmlURL = [NSURL URLWithString:@"http://domain.com/xml.xml"];
	
	//nova instance NSXMLParser. inicializace s vytvorenou url adresou
	NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
	
    //nastaveni self jako deletat parseru
    [parser setDelegate:self];
	
    //nastaveni vlastnosti parseru
    [parser setShouldProcessNamespaces:NO];
    [parser setShouldReportNamespacePrefixes:NO];
    [parser setShouldResolveExternalEntities:NO];

    [parser parse];
	
    [parser release];
}

Při vytvoření parseru pomoc [NSXMLParser alloc] může dojít v některé verzi xCode při kompilaci k chybě, kdy parser oznámí že nemohl parser najít, v tom případě použijte pro vytvoření instance:

NSXMLParser *parser = [[ NSClassFromString(@"NSXMLParser") alloc] initWithContentsOfURL:xmlURL];

Další metody parseru jsou vcelku jednoduché, v našem případě budeme jejich vstupní hodnoty pouze logovat do logu (xCode - Run - Console).

//zacatek parsovani dokoumentu
- (void)parserDidStartDocument:(NSXMLParser *)parser{
	NSLog(@"Zacatek parsovani dokumentu");
}

//zacatek elementu
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{			
    NSLog(@"zacatek elementu: %@", elementName);
}

//konec elementu
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     
	NSLog(@"konec elementu %@", elementName);
}

//nalezene znaky uvnitr elementu
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
	if (string) {
		NSLog(@"nalezene znaky uvnitr elementu %@", string);
	}
}

A tím je celý XML parser hotový. Po spuštění a při správné funkčnosti uvidíte výsledek podobný tomuto:

xmlparser

Pro další použití a informace se můžete podívat na class reference pro NSXMLParser (http://developer.apple.com/...ence/Reference.html)

 

 


linkuj topclanky
Komentáře (0)

Autor: Zaachi
Publikováno: 7.1.2011 11:33:14


Mohlo by vás zajímat:
Vývoj aplikací pro iPhone: použití SqLite v iPhone
Vývoj aplikací pro iPhone: Hello World app
Vývoj aplikací pro iPhone: simple switchViewer
Vývoj aplikací pro iPhone: UIScrollView – skrolovací obrazovka
TOPLIST.cz
rss coments img img img