2012-06-02 3 views
1

html 파일을 구문 분석하기 위해 jsoup를 사용하려고합니다. 테이블을 사용하여 제품을 표시했습니다. 각 제품은 ID가 1에서 "n"까지 인 하나의 표 안에 있습니다. 노호 예와 같은동적 ID와 함께 jsoup 사용

<table align="center" width="98%" id="A + 1"> 
    <tbody> 
     <tr> 
     <td valign="top" style="width: 03%;"> 
      <span class="line">1</span> 
     </td> 
     <td valign="top" style="width: 56%;"> 
      <span class="line">PRODNAME</span> 
     </td> 
     <td valign="top" style="width: 10%;"> 
      <span class="line">850.000</span> 
     </td> 
     </tr> 
    </tbody> 
</table> 

그래서 제 제품 ID "A + 1", "A + 2"등의 두 번째 테이블에있을 것이다.

선택기를 사용하여 이러한 테이블을 반복 할 수 없습니다. 되어 나는 그것이 오른쪽 (http://jsoup.org/apidocs/org/jsoup/select/Selector.html), doc.select("table[idˆ=A]") 누구의 ID 속성에 "A"로 시작하는 모든 테이블을 검색해야 읽으면 ...

Document doc = Jsoup.parse(html); 
Elements products = doc.select("table[idˆ=A]"); 
for (Element product : products) { 
    // do something 
} 

을하지만 내 요소 (제품) 객체 : 내가하고 있어요 비어있는 ... 내가 뭘 잘못하고있어?

Netbeans 7.1.2가 설치된 Mac OS X (10.7.4)에서 jsoup 1.6.3, java 1.6.0_31을 사용하고 있습니다.

도움을 주시면 감사하겠습니다.

답변

3

jsoup가 빈 결과 집합을 반환하거나 유효하지 않은 선택기에서 예외를 throw해야하는지 잘 모르겠지만 선택기에서 잘못된 곡절 문자를 사용하는 것 같습니다.

어쨌든, 대신이 시도 : 나는 두 번째 회선의 존재를 전혀 알지 있지만

Document doc = Jsoup.parse(html); 
Elements products = doc.select("table[id^=A]"); 
for (Element product : products) { 
   // do something 
} 
+0

예, 그것은 문제를 해결했다. 나는 6 키 (MacBook 키보드에서 Shift + 6)에 인접한 것을 사용하고 있습니다. 어쨌든, 나는 선택기에서 잘라 내기 및 붙여 넣기를했는데 효과가있었습니다. 옆으로 나란히 차이가 있습니다 ... –

+0

@Bob Rivers : Hmm, odd. 내 MacBook의 키보드는 여기에있는 것과 같은 ASCII 곡절을 생성합니다 (iPhone에서이 코드를 게시했지만 ...). 아마 인코딩 booboo 또는 키보드 레이아웃 특이한 것. – BoltClock

+0

좋은 캐치! 펑키 곡절 악센트 기호로 jsoup는 잠재적으로 유효한 선택 자일 수있는 속성 이름 = "id"value = "A"를 찾고 있으므로 예외가 발생하지 않습니다. –

관련 문제