2011-09-09 12 views
2

JSoupがHTMLドキュメントを解析するときにドキュメントツリーが返すのは、個々のドキュメント要素のgetComputedStyleをサポートしていますか?JSoupはgetComputedStyleまたは同等の機能をサポートしていますか?

私がしたいのは、フラグメントを大規模なHTMLドキュメントに挿入できるように、HTMLフラグメント内のCSSをインライン化することです。そのフォーマットはすべて保存されていますが、ドキュメント内に他のフォーマットはありません。

私が行った研究では、ドキュメント内のすべての要素を繰り返し、各要素でgetComputedStyleを呼び出し、その結果を要素のスタイルに割り当てることでこれを実現できると考えられます。

はい、私は、個々の要素に冗長な/不要なスタイル情報を入れて、結果として生じるHTMLを非常にうまく膨らませるかもしれないことを認識していますが、私はもっと大きなHTMLの価格を支払うつもりです。このようにスタイルをインラインに埋め込むことは、HTMLフラグメントを完全に移植可能にしながら、フォーマットを正確に保持する唯一の方法であることがわかります。 (その目的を達成するための別の提案がある場合は、私はすべて耳にします:-)

トピックに戻る... JSoupでgetComputedStyleまたはそれに相当するものを使用できない場合は、そこにありますか? getComputedStyleまたは同等のものをサポートする別のJava HTML + CSSパーサ?

ありがとうございました。

答えて

0

これはできません。 Jsoupは、CSSセレクタをサポートしているHTMLパーサであり、HTMLレンダラではありません。

JavaScriptなどをサポートするJavaベースのHTMLレンダラであるLobobrowserをご覧ください。 getComputedStyle()がLoboによってサポートされていることを私は知らないし、保証しません。

他のツールはありません。 HtmlUnitは、JavaScriptにアクセスしたり、JavaScriptを呼び出すことができるため、閉じることもできますが、some Google resultsは、getComputedStyle()もHtmlUnitでは機能しません。結局のところ、実際には実際のHTMLレンダラーでもありません。

+1

Loboには2009年以降の新リリースはありませんでしたので、放棄されたようです。誰も維持していない第三者コードでこの問題を解決したいとは思わない。 –

+0

これで既製のツールがない場合は、自分で実装するために必要なのは(擬似コード)だと思います。 組み込みまたはリンクされたすべてのスタイルシートをHTMLの または はその中の各スタイル指定用のスタイルシート を解析し、逆の順序でリンクされたスタイルシートはHTML に一致するすべてのノードを選択し 順序はその後のスタイルを確認することが重要である ノードのスタイルの先頭に指定されたスタイルを付加以前のものよりも優先されます。 それは正しいと思いますか? (コードがプレとして表示されない理由はわかりません) –

関連する問題