2011-07-23 57 views
4

我剛剛發現,設置baseUri對於通過執行select所獲得的每個元素都是必需的。如果文檔的baseUri適用於每個元素,將會好得多。Jsoup baseUri去掉後選擇

Document d = Jsoup.parse(myString); 
doc.setBaseUri("http://www.google.de"); 

如果我執行

Element e = d.select(....).get(0); 

e的基本URI是空的。

這是錯誤還是針對?

回答

3

基本URI是特定於每個元素的,因爲在基本URI可以在整個解析過程中改變的情況下,HTML中存在這樣的情況。目前,在解析之後將其設置在文檔上並不會將其展開到子節點。

只是specify它如果取從URL的HTML和解析(含Jsoup.connect),基本URI被自動設定當您解析HTML字符串,例如:

Document doc = Jsoup.parse(myString, "http://www.google.de"); 

+1

Afaik您只在head元素內設置baseURI()。我沒有從URL中獲取HTML。因此,設置文檔的baseURI幾乎沒有用,因爲通常在此之後執行選擇。 現在請看這是一個功能請求:) – T3rm1

+0

如果你像我建議的那樣將它包含在Jsoup.parse(url,baseUri)方法中,它將用作默認值,並且將流向每個元素,除非文檔覆蓋它。 –