2012-03-30 90 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字符的工作,但实际上html文件具有60k字符。如何在Jsoup中添加html中的所有元素?

+1

我不认为有这样一个输入的下限。我与更大的输入(在其他星座)工作。必须有一些不同的错误 – 2012-03-30 07:47:24

+0

你如何确定这个6k的限制? – vacuum 2012-03-30 08:00:59

+0

我检查文档(文档文档),它只有6K字符,并没有完成 – 2012-03-30 08:02:28

回答

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
  • ,如果你是在结束,直到你读到下一个结束标签或> char
  • 如果你在最后,直到你到达下一个块标签
  • 如果你是在最后,直到读一个特定的标签或评论
相关问题