Ios 如何获取网站的HTML并使用NSXMLParser进行解析

Ios 如何获取网站的HTML并使用NSXMLParser进行解析,ios,afnetworking,nsxmlparser,Ios,Afnetworking,Nsxmlparser,我正在尝试解析来自网站的XML(例如“”) 我可以使用以下方法轻松获取XML: NSURL *url = [NSURL URLWithString:@"http://www.kick-girl.com/?cat=3"]; NSLog(@"%@", [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]); 然而,当我尝试使用NSXMLParser时,它根本不起作用。我已经尝试将字符串转换为

我正在尝试解析来自网站的XML(例如“”)

我可以使用以下方法轻松获取XML:

 NSURL *url = [NSURL URLWithString:@"http://www.kick-girl.com/?cat=3"];
 NSLog(@"%@", [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]);
然而,当我尝试使用NSXMLParser时,它根本不起作用。我已经尝试将字符串转换为数据

NSString *s = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSData *d = [s dataUsingEncoding:NSUTF8Encoding];
NSXMLParser *xmlparser = [NSXMLParser alloc] initWithData:d];
xmlparser.delegate = self;
[xmlparser parse];
但它仍然不起作用。未调用NSXMLParserDelegate方法。 e、 g

我也尝试过使用AFN网络,看看这是否有帮助

NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *requestOp = [[AFHTTPRequestOperation alloc] initWithRequest:request];

requestOp.responseSerializer = [AFXMLParserResponseSerializer serializer];
[requestOp.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/xml", @"text/xml", @"text/html", nil]];
[requestOp setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSXMLParser *xmlparser = responseObject;

    xmlparser.delegate = self; 
    [xmlparser parse]; //Delegate methods are not called for some reason...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"OOPS: %@", error);
}];
[requestOp start];
我不明白是什么问题

我从-parser:parserrrorOccessed中得到一个分析错误:

Error Domain=NSXMLParserErrorDomain Code=65 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 65.)" UserInfo=0x8da6ce0 {NSXMLParserErrorLineNumber=2, NSXMLParserErrorColumn=17, NSXMLParserErrorMessage=attributes construct error
}


如何解决这个问题?

显然,我从网页上获取的XML并不完美,其中包含一些奇怪的东西。虽然web浏览器在读取xml时非常宽容,但nsxmlparser非常严格

为了防止这些奇怪的东西出现,我只需要取下我想要的部分的子字符串,然后删除空白,比如新行、回车和制表符。并进行了一些字符串操作,以确保标记实际上是平衡的

Error Domain=NSXMLParserErrorDomain Code=65 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 65.)" UserInfo=0x8da6ce0 {NSXMLParserErrorLineNumber=2, NSXMLParserErrorColumn=17, NSXMLParserErrorMessage=attributes construct error