パーザのデリゲートになる単純なクラスを作成します。
@interface YourObject : NSObject <NSXMLParserDelegate> {
NSString *title, *body; // object attributes
NSXMLParser *parser; // will parse XML
NSMutableString *strData; // will contains string data being parsed
}
@property(readwrite, copy) NSString *title, body;
// will be used to set your object attributes
-(void)fetchValuesAtURL:(NSString *)url;
@end
fetchValuesAtURL:
メソッドは、解析操作を開始します。その後
@implementation YourObject
@synthesize title, body;
-(id)init {
self = [super init];
if(self) {
title = @"";
body = @"";
parser = nil;
strData = [[NSMutableString alloc] initWithCapacity:10];
}
return self;
}
-(void)fetchValuesAtURL:(NSString *)url {
if(parser) {
[parser release];
}
NSURL *xmlURL = [NSURL URLWithString:url];
parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[parser setDelegate:self];
[parser parse];
}
-(void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict {
// element is about to be parsed, clean the mutable string
[strData setString:@""];
}
// the probably missing method
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
// content (or part of) has been found, append that to the current string
[strData appendString:string];
}
-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
// element has been parsed, test the element name
// and store strData accordingly
if([elementName isEqualToString:@"title"]) {
self.title = strData;
}
else { // or else if, here you got two elements to parse
self.body = strData;
}
}
-(void)dealloc {
[title release];
[body release];
[strData release];
if(parser) {
[parser release];
}
[super dealloc];
}
@end
:
YourObject *obj = [[YourObject alloc] init];
[obj fetchValuesAtURL:@"http://www.site.com/xml/url"];
NSXMLParser
のデリゲートは、AppleからEvent-Driven XML Programming Guideで説明したように、より多くのことを行うことが可能です。
デリゲートメソッドの詳細については、NSXMLParserDelegate Protocol Referenceを参照してください。
[XMLParser Advice](http://stackoverflow.com/questions/8392089/xmlparser-advice)の可能な複製 –
質問を再投稿しないでください。必要に応じてオリジナルを編集して、それをより鮮明にする必要があります。これはまた、フロントページにも当てはまります。 – jrturton
アドバイスありがとうございます@jrturton – jisturiz