2011-09-01 2 views
0

s'il vous plaît utiliser hpple (XPath), Ceci est un suivi à ma question précédente:Comment obtenir des éléments de html, xml par hpple (xpath)?

http://stackoverflow.com/questions/6723244/iphone-how-to-select-this-label 

Comment puis-je obtenir le numéro dans seekVideo(number)? Par exemple:

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

Je veux obtenir "2000".

J'ai essayé:

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

Mais ce qui ne va pas. Comment devrais-je faire cela?

Si quelqu'un peut utiliser le framework de code nommé hpple (xpath), ce serait génial.

Ceci est mon code pour obtenir du texte, maintenant comment changer pour obtenir le numéro ?????

#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]; 
} 
+0

Bonne question, +1. Voir ma réponse pour l'explication du problème et pour une expression XPath correcte qui évalue le nombre voulu. –

Répondre

1

J'ai essayé:

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

Mais ce qui ne va pas. Comment dois-je faire ?

Dans XPath 1.0 il est syntaxiquement illégal d'avoir un appel de fonction comme une étape de localisation.

Essayez:

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

Ou essayez:

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

... doit être remplacé par l'expression XPath qui sélectionne le parent de a.

+0

pouvez-vous me donner le code réel de "où ... doit être remplacé par l'expression XPath qui sélectionne le parent d'un." – libai

+0

@libai: J'ai utilisé "..." car vous n'avez fourni aucun document XML sur lequel vous souhaitez évaluer l'expression XPath. C'est * vous * qui devez le fournir. Si vous ne comprenez pas ce fait fondamental, alors vous perdez le temps de nombreux lecteurs - et certainement votre temps aussi. S'il vous plaît, éditez votre question, fournissez le document XML que vous voulez travailler avec (un document minimal est le meilleur) et puis notifiez-moi dans un commentaire. Il n'y a rien que je puisse faire jusque-là. Rappelez-vous - nous ne sommes pas desvoyants ici ... –

+0

merci, j'ai changé ma question, j'attendais votre aide? – libai

Questions connexes