2012-03-08 24 views
6

Ben Jsoup kitaplığını kullanarak, yerel bir HTML dosyası yüklemek gibi olamaz. Ya da en azından onu tanımak gibi görünmüyor. Yerel dosyada kesin html (var olarak 'html') kodlanmış ve bir dosya girişinin yerine o geçtiğinizde kod mükemmel çalışıyor. Ancak dosya her iki durumda da okunur.Yerel bir html dosyasını Jsoup'a nasıl yüklerim?

import java.io.File; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 


public class FileHtmlParser{ 

public String input; 


//constructor 
public FileHtmlParser(String inputFile){input = inputFile;} 


//methods 
public FileHtmlParser execute(){ 

    File file = new File(input); 
    System.out.println("The file can be read: " + file.canRead()); 

    String html = "<html><head><title>First parse</title><meta>106</meta> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head>" 
       + "<body><p>Parsed HTML into a doc.</p>" + 
       "" + 
       "<div id=\"navbar\">this is the div</div></body></html>"; 
      Document doc = Jsoup.parseBodyFragment(input); 




    Elements content = doc.getElementsByTag("div"); 
    if(content.hasText()){System.out.println("result is " + content.outerHtml());} 
    else System.out.println("nothing!"); 


    return this; 
} 

}/*endOfClass*/ 

Sonuç zaman:
Doküman doc = Jsoup.parseBodyFragment (HTML)

The file can be read: true 
result is <div id="navbar"> 
this is the div 
</div> 

Sonuç zaman:
Doküman doc = Jsoup.parseBodyFragment (giriş)

The file can be read: true 
nothing! 

cevap

9

Kişisel m istake bunu html işaretlemeyi veya html işaretlemesini içeren bir dize içeren bir dosya adı geçen almadığınızı Jsoup.parseBodyFragment() bilir varsayarak içindedir.

Jsoup.parseBodyFragment(input), input'un bir filename değil, html biçimlendirmesini içeren String olmasını bekler. ya hile yapmadım

File in = new File(input); 
Document doc = JSoup.parse(in, null); 
+0

Hayır'ı:

yerine JSoup.parse(File in, String charsetName) yöntemi kullanmak bir dosyadan ayrıştırmak için sormak için. –

+0

Güncelleme: Orijinal cevap ben yanlışlıkla yerine '' File'' nesne '' in'' ait input'' dize '' içinde geçti. Ayrıca çalışmasını sağlamak için kodu '' try-catch'' bloğuna sarmanız gerekecektir. – holygeek

+0

Teşekkür ederiz! Dize'den bir Dosya türüne geçiş, bir çekicilik çalıştı. –

İlgili konular