파서의 위임이 될 간단한 클래스를 작성하십시오.
@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
의 대표는 애플 Event-Driven XML Programming Guide에 설명 된대로, 더 많은 일을 할 수 있습니다.
대리자 메서드에 대한 자세한 내용은 NSXMLParserDelegate Protocol Reference을 참조하십시오.
가능한 중복 [XMLParser Advice] (http://stackoverflow.com/questions/8392089/xmlparser-advice) –
질문을 다시 게시하지 마십시오. 필요한 경우 원본을 편집하여 명확하게 만들어야합니다. 그러면 원본 페이지와 충돌하게됩니다. – jrturton
조언을 주셔서 감사합니다. @jrturton – jisturiz