1

私の理解では、パーサーをインスタンス化するときにベースURIが指定されている限り、jsoupパーサーは相対リンクを操作できます。

ここで、ドキュメントがページのURIとは異なるURIを持つベースタグを定義していると仮定します。このURIを事前に知ることはできません。

パーサーの動作は何ですか?タグを自動的に検出してドキュメント全体に適用しますか?または、最初にドキュメントを解析してベースタグを検出してから、検出された値をベースURIとして再解析する必要がありますか?

よろしくお願いしますKoj

4

1 に答える 1

1

Jsoup は<base>タグを検出し、ドキュメント全体に適用します。相対リンクを解決する場合、パーサーに提供された URI よりもベースタグ URI が優先されます。ドキュメントを 2 回解析する必要はありません。例として:

Document doc = Jsoup.parse(
    "<a href='/one/'>One</a>" +
    "<base href='http://example.com/' />" +
    "<a href='/two/'>Two</a>");
Elements els = doc.select("a");
for (Element e: els) {
    System.out.println(e.attr("abs:href"));
}

与えます:

http://example.com/one/
http://example.com/two/
于 2012-12-11T16:48:03.490 に答える