Как разобрать HTML с TouchXML или какой-то другой альтернативой - PullRequest
0 голосов
/ 19 декабря 2010

Я пытаюсь проанализировать представленный ниже HTML-код с TouchXML, но он продолжает падать, когда я пытаюсь извлечь определенные атрибуты. Я совершенно новичок в мире парсеров, поэтому прошу прощения за то, что я полный идиот. Мне нужна помощь, чтобы разобрать этот HTML. Я пытаюсь выполнить синтаксический анализ каждого атрибута и значения или чего-либо еще и скопировать их в строку. Я пытался найти хороший парсер для разбора HTML, и я считаю, что TouchXML - лучшее, что я видел из-за Tidy. Говоря о Tidy, как я могу сначала запустить этот HTML через Tidy, а затем проанализировать его? Я не уверен, как это сделать. Вот код, который у меня есть, который не работает из-за того, что он не извлекает все, что мне нужно, из HTML. Любая помощь или совет будет высоко ценится. Спасибо

Мой текущий код:

NSMutableArray *res = [[NSMutableArray alloc] init];

//  using local resource file
NSString *XMLPath   = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"example.html"];
NSData *XMLData     = [NSData dataWithContentsOfFile:XMLPath];
CXMLDocument *doc   = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease];

NSArray *nodes = NULL;

nodes = [doc nodesForXPath:@"//div" error:nil];

for (CXMLElement *node in nodes) {
    NSMutableDictionary *item = [[NSMutableDictionary alloc] init];



    [item setObject:[[node attributeForName:@"id"] stringValue] forKey:@"id"];

    [res addObject:item];
    [item release];
}


NSLog(@"%@", res);
[res release];

HTML-файл, который нужно проанализировать:

<html> 
<head> 
<base target="_blank" /> 
</head> 
<body style="margin:2;"> 
<div id="group"> 
<div id="groupURL"><a href="http://www.example.com/groups">Group URL</a></div> 
<img id="grouplogo" src="http://images.example.com/groups/image.png" /> 
<div id="groupcomputer"><a href="http://www.example.com/groups/page" title="Group Title">Group title this would be here</a></div> 
<div id="groupinfos"> 
    <div id="groupinfo-l">Person</div><div id="groupinfo-r">Ralph</div> 
    <div id="groupinfo-l">Years</div><div id="groupinfo-r">4 years</div> 
    <div id="groupinfo-l">Salary</div><div id="groupinfo-r">100K</div> 
    <div id="groupinfo-l">Other</div><div id="groupoth" style="width:15px">other info</div> 
</body> 
</html>

РЕДАКТИРОВАТЬ: Я мог бы использовать Элемент Parser, но мне нужно знать, как извлечь Имя человека из следующего примера, который в этом случае будет Ральф.

<div id="groupinfo-l">Person</div><div id="groupinfo-r">Ralph</div>

1 Ответ

1 голос
/ 19 декабря 2010

Я не знаю, делаете ли вы что-то неправильно, но я рекомендую вам использовать элемент парсера , лучший парсер для XML и HTML, который я нашел. Надеюсь, это поможет.

...