2010-12-06 19 views
1

Ich möchte einige einfache XML-Parsing für das iPhone tun. Meistens zum Üben. Ich denke, XML ist wirklich einfach und ich möchte lernen, es mit anderen Sprachen zu integrieren.XML Parsing auf dem iPhone

verwendet i diesen Link für eine Anleitung, wie man XML-Analyse zu tun, aber es war ein wenig zu hoch für meinen Zweck:/

ist nicht es eine einfache Möglichkeit, die nicht viele Zeilen Code benötigt, um XML-Parsing durchführen?

http://webcache.googleusercontent.com/search?q=cache:4S0UStrJP28J:gigaom.com/apple/tutorial-build-a-simple-rss-reader-for-iphone/+xml+parser+iphone&cd=3&hl=en&ct=clnk&client=safari

Mit freundlichen Grüßen!

Kristian

EDIT:

ich in der Lage war, zu erreichen, was ich mit diesem wollte:

- (void)startParsing { 
    NSData *xmlData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.vegvesen.no/trafikk/xml/savedsearch.xml?id=604"]]; 
    NSXMLParser *parser = [[[NSXMLParser alloc] initWithData:xmlData] autorelease]; 
    [parser setDelegate:self]; 
    [parser parse]; 
} 

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

dies nur aus dem elemente drucken ... Wie soll ich von hier aus gehen um den Wert von jedem Element zu erhalten?

+4

Leute, die sagen "XML ist wirklich einfach" fallen normalerweise in zwei Kategorien: Leute, die XML vollständig verstehen, und die Leute, die * denken *, dass sie XML vollständig verstehen. Zu welcher gehörst du? –

+0

wahrscheinlich der letzte ... –

+2

Sie sollten Apples [Event-Driven XML-Programmierung Leitfaden für Kakao] lesen (http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/XMLParsing/XMLParsing.html % 23 // apple_ref/doc/uid/10000186i) zuerst. – Anna

Antwort

1

Während es gut ist, in der Praxis zu wissen, könnte man viel leichter mit JSON haben

+0

i bereits eine JSON-Anwendung gemacht :) jetzt möchte ich den Einsatz von XML, etwas zu tun;) –

+0

Wenn Sie eine Enterprise-Class-App tun, das verbraucht XML-Code, du hast nicht geschrieben, dann möchtest du vielleicht das lernen. Ansonsten, wenn Sie den Transport erstellen und es wird relativ einfach sein - dann würde ich XML auf dem iPhone vermeiden. Es könnte mächtiger sein, aber es ist mühsam und schmerzhaft zu analysieren. Aber, Requisiten, um es zu lernen. – Kreegr

0

i nehme an, Sie müssen eine Modellklasse wie diese gemacht haben:

Import

CarDetails.h

@interface CarDetails : NSObject 
{ 
    NSString *MapName; 
    NSString *MapContentName; 
    NSString *MapWidth; 
    NSString *MapHeight; 
} 

@property(retain,nonatomic)NSString *MapName; 
@property(retain,nonatomic)NSString *MapContentName; 
@property(retain,nonatomic)NSString *MapWidth; 
@property(retain,nonatomic)NSString *MapHeight; 

CarDetails.m

import „CarDetai ls.h“

@implementation CarDetails

@synthesize MapName; @synthesize MapContentName; @synthesize MapWidth, MapHeight;

@end

Siehe diese die Modellobjekte sind, wo u ur Werte global speichern und Sie die Werte von hier

jetzt Delegierten verwenden wir drei XML-Parser

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if([elementName isEqualToString:@"car"]){ 
    carDetails =[[carDetails alloc]init]; 
} 

} 


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName; 
{ 

if([elementName isEqualToString:@"title"]){ 
    car.mapName=nodecontent; 
} 
else if([elementName isEqualToString:@"link"]){ 
    car.MapContenName=nodecontent; 
} 

//finally when we reaches the end of tag i am adding data inside the NSMutableArray 
if([elementName isEqualToString:@"item"]){ 

    [rssOutputData addObject:car]; // adding the model class object to the array and then use this array to retrieve the values 
    [car release]; 
    car = nil; 
} 
//release the data from mutable string variable 
[nodecontent release]; 

//reallocate the memory to get new content data from file 
nodecontent=[[NSMutableString alloc]init]; 

} 
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
} 

1) verwenden können, In didStart werden Sie das Modellklassenobjekt nur dann zuordnen, wenn Sie den ersten Knoten finden 2) in foundCharacters fügen Sie die Daten an 3) in didEndElement ordnen Sie die Daten von foundCharacters dem mo zu del object