iPhone, разбирающий HTML с TouchXML
Кто-нибудь из вас имеет опыт разбора HTML с помощью библиотеки TouchXML на iPhone. Я хотел бы проанализировать некоторые HTML и, следовательно, попробуйте сделать следующее
self.parser = [[CXMLDocument alloc]initWithData:self.html options:0 error:&error1];
if (error1) {
NSLog(@"Error: %d", error1);
}
NSError *error;
NSArray *resultNodes = [[NSArray alloc]init];
NSLog(@"starting to do some crazy parsing");
resultNodes = [self.parser nodesForXPath:@"//div" error:&error];
if (error)
NSLog(@"initWithData error : %d", error);
К сожалению, это не работает вообще. И я не знаю, как отладить это правильно. Мой HTML должен быть действительным. Он просто начинается с тега html, что означает отсутствие типа документа. Кажется, что метод initWithData уже дает сбой и возвращает следующую ошибку: Ошибка: Ошибка Domain=CXMLErrorDomain Code=-1 "Операция не может быть завершена. (Ошибка CXMLErrorDomain -1.)" Если я пытаюсь вывести вторую ошибку, приложение сбой раньше, вероятно, из-за того, что initWithData не работает.
Кто-нибудь из вас имел опыт разбора HTML с помощью библиотеки TouchXML?
Спасибо за любую помощь!
2 ответа
Прежде всего, ошибка - это указатель на объект, так что если вы хотите его распечатать. Так должно быть: NSLog(@"%@", error1);
То же самое для ошибки. Если вы хотите напечатать код ошибки. Ты можешь сделать NSLog(@"%d", [error1 code])
, То, что вы нам даете, это просто область памяти ошибки
Следующее работает абсолютно нормально для меня. Попытайся.
CXMLDocument *rssParser = [[[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil] autorelease];
resultNodes = [rssParser nodesForXPath:@"//item" error:nil];
// Loop through the resultNodes to access each items actual data
for (CXMLElement *resultElement in resultNodes) {
....
Также убедитесь, что ваша ссылка верна. Пару раз это случалось со мной, когда я использовал feed://www.foo.com/feed вместо http://www.foo.com/feed
Приветствия.