使用AFNetworking库获取XML内容

iAr*_*zki 4 xml iphone objective-c ios afnetworking

现在我想使用AFNetworking库来获取XML内容,所以我使用这段代码

AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request 
success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) 
{
    XMLParser.delegate = self;
    [XMLParser parse];
} 
failure:nil];
[operation start];
Run Code Online (Sandbox Code Playgroud)

我的问题是知道是否有任何方法来获取xml响应的内容(我想用NSLog打印xml内容)

提前致谢

ndf*_*red 8

请求中的原始数据始终在responseData操作类的属性中可用.以下是您将如何展示它NSLog:

__block AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://legalindexes.indoff.com/sitemap.xml"]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
    NSLog(@"Parser: %@", XMLParser);
    NSLog(@"Raw XML Data: %@", [[NSString alloc] initWithData:operation.responseData encoding:NSUTF8StringEncoding]);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {
    NSLog(@"Failure!");
}];

[operation start];
Run Code Online (Sandbox Code Playgroud)

也就是说,标准AFXMLRequestOperation类使用的NSXMLParser是痛苦的使用.如果您的有效负载不是太大而且性能不是问题,我建议您使用Mattt的新AFKissXMLRequestOperation类,它将为您进行解析并公开更友好的NSXMLDocument兼容对象:

__block AFKissXMLRequestOperation *operation = [AFKissXMLRequestOperation XMLDocumentRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://legalindexes.indoff.com/sitemap.xml"]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, DDXMLDocument *XMLDocument) {
    NSLog(@"XMLDocument: %@", XMLDocument);
    NSLog(@"Raw XML Data: %@", [[NSString alloc] initWithData:operation.responseData encoding:NSUTF8StringEncoding]);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, DDXMLDocument *XMLDocument) {
    NSLog(@"Failure!");
}];

[operation start];
Run Code Online (Sandbox Code Playgroud)