Как получить элементы html, xml по hpple (xpath)? - PullRequest
0 голосов
/ 01 сентября 2011

пожалуйста, используйте hpple (xpath), это продолжение моего предыдущего вопроса:

/5093191/izvlechenie-href-teksta-iz-html-dokumenta

Как я могу получить номер в seekVideo(number)? Например:

<a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;"

Я хочу получить "2000".

Я пробовал:

NSArray *elements = [xpathParser search:@"//div[@id='transcriptText']/div/p/number(substring-before(substring-after(@onclick, '('), ')'))"];

Но это не так. Как мне это сделать?

Если кто-то сможет использовать структуру кода с именем hpple (xpath), было бы здорово.

это мой код для получения текста, теперь как поменять на получение номера ?????

  #define WebSite @"http://www.ted.com/talks/matt_cutts_try_something_new_for_30_days.html"

- (void)setLoadData
{
    NSData *siteData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:WebSite]];



    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:siteData];
    NSArray *elements = [xpathParser search:@"//div[@id='transcriptText']/div/p/a[number(substring-before(substring-after(@onclick, '('), ')')) >2000]/text()"];

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

    for (TFHppleElement *element in elements) 
    {

        NSString *strs = [element content];
        NSLog(@"cc: %@", strs);
        [arr addObject:strs];
        NSLog(@"arr: %@", arr);

    }
    self.listData = arr;
    [arr release];
    [xpathParser release];
}

1 Ответ

1 голос
/ 01 сентября 2011

Я пробовал:

     NSArray *elements = [xpathParser
 search:@"//div[@id='transcriptText']/div/p/number(substring-before(substring-after(@onclick,
 '('), ')'))"]; 

Но это не так. Как мне быть?

В XPath 1.0 синтаксически недопустимо иметь вызов функции в качестве шага расположения .

Попытка:

substring-before(substring-after(.../a/@onclick, 'seekVideo('), 
                 ')'
                 )

Или попробуйте:

number(
       substring-before(substring-after(.../a/@onclick, 'seekVideo('), 
                        ')'
                        )
       )

где ... должен быть заменен выражением XPath, которое выбирает родителя a.

...