2012-03-30 3 views
0
File input = new File("1727209867.htm"); 
Document doc = Jsoup.parse(input, "UTF-8","http://www.facebook.com/people/Alison-Vella/1727209867"); 

저장되고 로컬 시스템에서 사용하는이 html 파일을 구문 분석하려고합니다. 그러나 파싱은 모든 HTML을 구문 분석하지 않습니다. 그래서 나는 필요한 정보를 얻을 수 없다. 구문 분석은 6k char에 대해서만이 코드를 사용하지만 실제로 html 파일에는 60k char가 있습니다.Jsoup를 사용하여 HTML의 모든 요소를 ​​어떻게 추가 할 수 있습니까?

+1

입력에 대한 최저 한도는 없다고 생각합니다. 나는 더 큰 입력 (다른 별자리에서)으로 일했다. 몇 가지 다른 잘못이 있어야합니다 –

+0

이 6k 한도는 어떻게 결정됩니까? – vacuum

+0

나는 doc (문서 문서)를 확인하고 그것은 단지 6k의 char와 didnt의 마무리를 가지고있다. –

답변

0

이것은 jsoup 가능 아니지만, 해결로 :

final File input = new File("example.html"); 
final int maxLength = 6000; // Limit of char's to read 

InputStream is = new FileInputStream(input); // Open file for reading 
StringBuilder sb = new StringBuilder(maxLength); // Init the "buffer" with the size required 
int count = 0; // Count of chars readen 
int c; // Char for reading 

while((c = is.read()) != -1 && count < maxLength) // Read a single char until limit is reached 
{ 
    sb.append((char) c); // Save the char into the buffer 
    count++; // increment the chars readen 
} 


Document doc = Jsoup.parse(sb.toString()); // Parse the Html from buffer 

는 설명 :

  1. 파일을 읽기 숯불 별 문자 당신까지 버퍼에 한계에 도달
  2. 버퍼에서 텍스트를 구문 분석하고 jsoup로 처리합니다.

문제 : 이것은 닫는 태그 등에 대해서는 신경 쓰지 않습니다. 한계에 도달하면 정확하게 읽지 않습니다.

(가능한) 솔루션 : 당신이 마지막에있는 경우

  • 매달려 HTML
  • 을이를 무시하고 "수정를"당신이이 구문을 분석 정확히 어디에 중지 또는 삭제 다음 닫기 태그에 도달 할 때까지 읽거나 > 문자
  • 끝까지 읽으면 다음 블록 태그에 도달 할 때까지 읽습니다.
  • 끝나면 특정 태그 나 설명까지 읽으십시오.
관련 문제