Разбор HTML-данных в UITableView - PullRequest
1 голос
/ 22 октября 2011

У меня есть HTML-данные, которые выглядят так:

<div id="foo"><a class="someClass" href="http://somelink">Some Title</a></div>
<div id="foo"><a class="someClass" href="http://somelink1">Some Title 1</a></div>
<div id="foo"><a class="someClass" href="http://somelink2">Some Title 2</a></div>

Я могу показать заголовок ссылки в tableView, но как я могу получить URL-адрес этого конкретного заголовка для загрузки нового представления (котороепроталкивается через контроллер навигации при выборе ячейки таблицы)?

Вот код, который я использую для анализа данных HTML:

HTMLParser * parser = [[HTMLParser alloc] initWithData:responseData error:&error];
HTMLNode * bodyNode = [parser body];
someArray = [[bodyNode findChildrenWithAttribute:@"id" matchingName:@"someID" allowPartial:NO] retain];

И этот, чтобы показать данные массива в таблице:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  {
    return [someArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    }


    HTMLNode* someNode = [someArray objectAtIndex:[indexPath row]];
    cell.textLabel.text = [NSString stringWithFormat:@"%@",[someNode allContents]];     

    return cell;    
}

1 Ответ

0 голосов
/ 29 ноября 2011

Когда вы получаете узел и хотите получить информацию о дочернем узле внутри него, вы должны продолжить анализ, чтобы найти дочерний узел, а затем получить искомый атрибут. Например:

HTMLNode *anchorNode = [someNode findChildTag:@"a"];
NSString *anchorHref = [anchorNode getAttributeNamed:@"href"];

Можно упомянуть, что вы смотрите на HTMLParser Бена Ривза . (По крайней мере, я думаю, что это тот, который вы используете).

...