2011-03-02 2 views
1

현재 내가 구문 분석있어 HTML은 내가 처음 TR 제외하고 각 TR을 (그래서 각 TR 내부의 각 # 2 TD에 도달 할 수 있습니다) 얻기 위해 시도하는 내부 TH을 가지고있어이objective-c에서 Xpath 쿼리를 작성하여 첫 번째 TR을 제외한 모든 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/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하지만 줄 바꿈과 약간 혼란스러워 보입니다. 한 줄에 넣고 싶을 수도 있습니다. –

+0

우수! 많이 고마워! –

+0

@Abe, 스크롤이 더 안 좋아 보인다 : (@ 토란, 당신은 환영합니다. – Flack

관련 문제