objective-c
  • xpath
  • 2011-03-02 69 views 1 likes 
    1

    目前我解析HTML看起來像這樣如何在objective-c中構建一個Xpath查詢以獲取除第一個以外的每個TR?

    NSString* markup = [NSString stringWithFormat:@" 
    <html> 
        <head> 
         <title>hi</title> 
        </head> 
        <body> 
         <table id='ctl00_ContentPlaceHolder1_dgAppointmentSearchResult'> 
          <tr> 
           <th>fail</th> 
          </tr> 
          <tr> 
           <td>1</td> 
           <td>2</td> 
          </tr> 
          <tr> 
           <td>3</td> 
           <td>4</td> 
          </tr> 
         </table> 
        </body> 
    </html>"]; 
    

    接下來,我試圖讓每個TR(這樣我就可以達到每個#2 TD每個TR內),除了第一TR有TH內所以我想避免這種情況。

    到目前爲止,我有以下的,但注意它只是拉一個特定的TR/TD組合..不是每個人:(

    NSData *data = [markup dataUsingEncoding:NSUTF8StringEncoding]; 
    TFHpple* xpathParser = [[TFHpple alloc] initWithHTMLData:data]; 
    NSArray *elements = [xpathParser search:@" 
    //table[ 
        @id='ctl00_ContentPlaceHolder1_dgAppointmentSearchResult' 
    ]/tr[2]/td[2] 
    "]; 
    TFHppleElement *element = [elements objectAtIndex:0]; 
    NSString *content = [element content]; 
    [xpathParser release]; 
    [data release]; 
    

    任何幫助的XPath新手?

    回答

    3

    您可以使用或者:

    //table[@id='ctl00_ContentPlaceHolder1_dgAppointmentSearchResult']/tr 
        [position() > 1]/td[2] 
    

    甚至更​​多的語義:

    //table[@id='ctl00_ContentPlaceHolder1_dgAppointmentSearchResult']/tr 
        [not(th)]/td[2] 
    
    +0

    +1,但看起來有點讓人困惑,在那裏有換行符。可能想把它放在一條線上。 – 2011-03-02 17:35:47

    +0

    優秀!非常感謝你! – 2011-03-02 17:37:45

    +0

    @Abe,滾動看起來更糟::(@Toran,不客氣。 – Flack 2011-03-02 17:38:39

    相關問題