2014-08-29 1 views
0

Я пытаюсь разобрать XML с веб-сайта (например, «http://www.kick-girl.com/?cat=3»)Как получить HTML веб-сайта и разобрать его с NSXMLParser

Я могу легко получить 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 не вызываются. , например.

- (void)parser:didStartElement:namespaceURI:qualifiedName:attributes: 

Я также попытался с помощью AFnetworking, чтобы увидеть, если это поможет

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: parserErrorOccurred:

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

}

Как это исправить?

ответ

0

По-видимому, XML, который я получил с веб-страницы, не является совершенным и содержит в себе какие-то странные вещи. Хотя веб-браузер довольно прощает, когда дело доходит до чтения xml, nsxmlparser очень строгий.

Чтобы предотвратить появление этого странного материала, я просто взял подстроку частей, которые хотел, а затем удалил пробелы, такие как новые каретки вершин и вкладки. И сделали некоторые строковые манипуляции, чтобы убедиться, что теги были фактически сбалансированы.

 Смежные вопросы

  • Нет связанных вопросов^_^