2011-07-23 18 views
4

私は、selectを実行することによって得られる各要素に対して、baseUriの設定が必要であることを発見しました。 DocumentのbaseUriが各Elementに適用されると、より良い結果が得られます。Jsoup baseUri after select

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

私は

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

を実行した場合eのBASEURIは空です。

これはバグですか、それとも意図していますか?

答えて

3

基本URIは各要素に固有です.HTMLでは、解析中にベースURIが変更されることがあります。現在、解析後にドキュメントに設定すると、子ノードにバブルされません。あなたがHTML文字列、例えば:

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

を解析する際

だけspecifyそれあなたがURLからHTMLを取得し、(Jsoup.connectで)それを解析する場合は、ベースURIが自動的に設定されています。

+1

Afuraでは、headURI()内にのみbaseURIを設定します。私はURLからHTMLを取得していません。だから、あなたは通常それ以降にselectを行うので、ドキュメントのbaseURIを設定することはかなり無駄です。 これを機能要求として今すぐ参照してください:) – T3rm1

+0

私が示唆するようにJsoup.parse(url、baseUri)メソッドにインクルードすると、デフォルトとして使用され、ドキュメントがオーバーライドしない限り、すべての要素に流れます。 –