5

私の意図は、既存の要素の変更、要素の削除、新しい要素の挿入など、HTML ドキュメントを編集することです。

HTMLEditorKit および関連クラスのドキュメント、および Sun の Java Trail の関連トピックを読みましたが、実際の HTML ドキュメント操作に関する情報はほとんどありません。議論と例のほとんどは、HTML を実際に編集するのではなく、HTML の読み取りと解析を扱っています。いくつかのグーグルではまだ適切な解決策が得られず、コーディングの試行錯誤でタスクに取り組もうとすると、ほとんど例外が発生しました。

ここで関連する質問と回答をSOで調べましたが、JDKで解決策を探している間、ほとんどの回答はいくつかの代替案を提案しました。おそらく、HTMLEditorKit は、swing 以外のアプリケーションにはほとんど役に立たず、javax.swing の外に代替手段がありますか?

実行方法を学びたいいくつかのタスクを次に示します。

  • 特定のテキスト フィールドのテキストを置き換えます。
  • <script>要素の基本的な編集 (検索/置換または正規表現) 。
  • 特定の要素の境界線に色を付けます。
  • 特定のタグを完全に削除します (フラッシュ要素など)。

HTMLEditorKit が JDK で最高の HTML 編集コンポーネントであると仮定すると、どのチュートリアルまたはリファレンスをお勧めしますか?

4

3 に答える 3

2

あなたのことはわかりませんが、操作しようとしている html ページがそれほど複雑でない場合は、次のように自分で作成できると思います。

HTMLDocument doc = new HTMLDocument();

HTMLEditorKit kit = new HTMLEditorKit();

jEditorPane.setDocument(doc);

jEditorPane.setEditorKit(kit);

kit.insertHTML(doc, doc.getLength(), "<label> This label will be inserted inside the body  directly </label>", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), "<br/>", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), putYourVariableHere, 0, 0, null);

そうすれば、html を完全に制御でき、外側の html からロードするよりも高速にロードできます。

于 2011-07-10T13:37:26.993 に答える
2

HTMLEditorKitHTML エディタではなく、これらのドキュメント モデルを HTML との間で変換できるドキュメント モデル用のエディタです。エディタ キットの内部モデルは「HTML」ではなく、に基づいていDefaultStyledDocumentます。あなたを混乱させるのは、HTMLDocumentクラスがあるということです。ただし、これは のシン ラッパーにすぎないDefaultStyledDocumentため、HTML から作成して HTML として保存できます。

必要なのは HTML パーサーです。jTidyを試してください。HTML を読み取り、内部モデルを構築します (無視するようなものを保持します) <script>HTMLEditorKitその後、DOM API を使用してモデルを変更できます。

とはいえ、多くのユースケースでは、HTML を正規表現または単純な文字列の検索と置換でフィルタリングするだけで十分です。

于 2009-09-21T14:06:25.903 に答える
0

HTMLDocumentJavaでHTMLドキュメントを使用およびHTMLEditorKit編集するためのチュートリアルが存在するかどうかはわかりません。JDK の実装はいくらか制限されていますが、内部的には DOM に似た要素のツリーを作成します。getRootElements()メソッドを使用して、HTMLDocument からツリーにアクセスできます。

Element html = doc.getRootElements()[0];

docのインスタンスを次に示しますHTMLDocument。HTML を編集するのは簡単ではないと思いますHTMLDocumentが、可能です。次の方法を参照してください。

これらのメソッドはすべてElement、編集が行われる参照点として受け入れます。メソッドを使用して要素のツリー構造をたどることができ、ツリーのルートへの参照を取得する方法を示しました。

これらのメソッドを使用して、視覚的な HTML エディターを作成できます。HTML モデルを表示するには、オブジェクトのsetEditable(false)メソッドを呼び出しJEditorPaneます。

モデルで読み込まれた HTML のコンテンツを操作する方法の非常に簡単な例についてはJEditorPane別の HTML 関連の質問への回答にある私のサンプル アプリケーション、特にイベント ハンドラーのコードを参照してください。HTMLDocumentpropertyChange

HTML をより細かく制御するには、HTML DOM を作成し、それを変更できるライブラリを使用することをお勧めします。

于 2011-08-14T19:03:37.480 に答える