2012-11-20 65 views
0

我需要從遠程URL解析xml字符串,並且我想使用AFNetworking。這是我的代碼:用AFNetworking和NSXMLParser解析xml

NSURL *url2 = [NSURL URLWithString:@"REMOTEXMLURL"]; 
NSURLRequest *request2 = [NSURLRequest requestWithURL:url2]; 

AFXMLRequestOperation *operation2 = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request2 
             success:^(NSURLRequest *request2, NSHTTPURLResponse *response2, NSXMLParser *XMLParser) { 
              NSLog(@"TESTING PARSING"); 
              [XMLParser setDelegate:self]; 
              [XMLParser parse]; 
             } failure:^(NSURLRequest *request2, NSHTTPURLResponse *response2, NSError *error2, NSXMLParser *XMLParser) { 
             NSLog(@"%@", [error2 userInfo]); 
             }]; 
[operation2 start]; 

它是正確的嗎?現在,我已經* XMLParser中,我能避免使用的NSXMLParser委託方法,如:

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 

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

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 

或者我約束使用呢?換句話說,使用AFNetworking和AFXMLRequestOperation初始化的XMLParser對象必須傳遞給委託方法,或者我可以用其他方式解析它(如AFJSONRequestOperation,進入AFNetworking操作)?謝謝!

回答

2

NSXMLParser需要一個委託。如果你想使用NSXMLParser,並且希望你的類成爲它的委託,你需要實現委託方法來理解你的XML。

XML解析器不知道你的XML的含義是什麼,它只是將它讀給你;你必須自己理解它。

+0

謝謝fzwo,當然NSXMLParser需要一個委託,我知道。我希望實現一種方法INTO [AFXMLRequestOperation]代碼(它發生在JSON解析和AFJSONRequestOperation中),而不是三種委託方法,但我認爲這是不可能的。 – Huxley