問題タブ [htmleditorkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - HTMLDocument、HTMLEditorKit、および空白スペース
次のコードを実行すると:
次の出力が得られます。
ただし、 の値を に変更すると、次のようになりcontent
ます" "
。
私はこの出力を得る:
コンテンツが 向けにLeafElement
構築されているのに、 向け"x"
に構築されていないのはなぜ" "
ですか? LeafElement
のために を構築したい" "
。私は何か間違ったことをしていますか、それとも問題ですHTMLDocument
かHTMLEditorKit
?
java - HTML ドキュメントの編集方法を実際に説明している HTMLEditorKit の優れたチュートリアル/リファレンスはどこにありますか?
私の意図は、既存の要素の変更、要素の削除、新しい要素の挿入など、HTML ドキュメントを編集することです。
HTMLEditorKit および関連クラスのドキュメント、および Sun の Java Trail の関連トピックを読みましたが、実際の HTML ドキュメント操作に関する情報はほとんどありません。議論と例のほとんどは、HTML を実際に編集するのではなく、HTML の読み取りと解析を扱っています。いくつかのグーグルではまだ適切な解決策が得られず、コーディングの試行錯誤でタスクに取り組もうとすると、ほとんど例外が発生しました。
ここで関連する質問と回答をSOで調べましたが、JDKで解決策を探している間、ほとんどの回答はいくつかの代替案を提案しました。おそらく、HTMLEditorKit は、swing 以外のアプリケーションにはほとんど役に立たず、javax.swing の外に代替手段がありますか?
実行方法を学びたいいくつかのタスクを次に示します。
- 特定のテキスト フィールドのテキストを置き換えます。
<script>
要素の基本的な編集 (検索/置換または正規表現) 。- 特定の要素の境界線に色を付けます。
- 特定のタグを完全に削除します (フラッシュ要素など)。
HTMLEditorKit が JDK で最高の HTML 編集コンポーネントであると仮定すると、どのチュートリアルまたはリファレンスをお勧めしますか?
java - Swing Parser の handleText がネストされたタグを処理しないのはなぜですか?
ネストされたタグを持つ HTML テキストを変換して、「一致」を強調表示する css 属性で装飾する必要があります (Firefox 検索など)。単純な置換を行うことはできません (たとえば、ユーザーが「img」を検索した場合を考えてください)。そのため、(タグ属性ではなく) 本文内で置換を実行しようとしています。
私はこれを行うべきだと思う非常に簡単なHTMLパーサーを持っています:
私の問題は、これをデバッグすると、タグを含むテキストで handleText が呼び出されることです! 1 レベルだけ深くなっているようなものです。理由を知っている人はいますか?ネストされたタグの「適切な」動作を有効にするために、HTMLParser (あまり使用していない) に対して行う必要がある簡単なことはありますか?
PS - 私は自分でそれを理解しました - 以下の答えを見てください。簡単な答えは、事前にエスケープされた HTML ではなく、HTML を渡せば問題なく動作するということです。どっ!これが他の誰かに役立つことを願っています。
java - HTMLDocument の Body に HTML を挿入する
これはとても簡単な質問のように思えますが、私はそれでとても苦労しています。
問題:
に挿入するテキストがありますHTMLDocument
。このテキストは、いくつかの html も指定することがあります。例えば:
HTMLEditorKit.insertHTML
指定したオフセットに挿入するために使用しています。オフセットがドキュメントの先頭にない限り (オフセット = 1)、これは正常に機能します。head
この場合、テキストはではなくドキュメントの に挿入されますbody
。
例:
私はフォントタグを使用しているので、挿入するものは属性のないフォントタグになるため、フォーマットには影響しません。最後のパラメーターが必要であり、実行時までinsertTag
内容を知ることができないため、これを知る必要があります。stringToInsert
ドキュメントに既にテキスト (「1234567890」など) がある場合、出力は次のようになります。
ただし、オフセットが 1 でドキュメントが空の場合、次の結果になります。
その他の注意事項:
- これはすべて、 の内部文書で行われてい
JEditorPane
ます。JEditorPane
のテキストを潜在的な HTML に置き換えるより良い方法があれば、それらのアイデアも受け入れます。
どんな助けでも大歓迎です。 ありがとう!
java - JEditorPaneでHTMLを使用してテキストをフォーマットしますか?
JavaSwingで簡単なメールクライアントを作成しようとしています。
テキストの一部を太字にしたり、他の部分を斜体にしたりするなど、ユーザーが好きなようにメールをフォーマットできるようにしたいのです。つまり、WYSIWYGエディターを作成しようとしています。フォーマットはHTMLで行われます。JEditorPaneを使用してテキストを表示しています。
JEditorPaneのsetTextメソッドとgetTextメソッドを使用して、自分でタグをテキストに直接追加してみました。基本的なフォーマットで動作させることはできますが、複雑なフォーマットを処理するのは非常に困難です。(たとえば、複数のタグが付けられた要素からタグを削除しようとしています)
これを達成するためのより簡単な方法はありますか?HTMLEditorKitを見てきましたが、特定の文字列へのタグの追加や特定の文字列の置換をサポートしていないようです。
前もって感謝します。
html - Java を使用して HTML の配置を削除する
HTMLドキュメントの配置を削除する際に問題が発生しました。
私の問題は、2番目の段落に影響を与えずに最初の段落の配置を削除する方法です。正規表現を使用すると、2番目のパラメタの配置も削除されます。この問題に関するコメントをお待ちしております。
java - JavaでHTMLをプレーンテキストに変換する
HTMLをプレーンテキストに変換する必要があります。フォーマットの私の唯一の要件は、プレーンテキストで新しい行を保持することです。新しい行は、の場合だけでなく<br>
、他のタグ、たとえば<tr/>
、</p>
新しい行につながる場合にも表示する必要があります。
テスト用のサンプルHTMLページは次のとおりです。
- http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter09/scannerConsole.html
- http://www.javadb.com/write-to-file-using-bufferedwriter
これらはランダムなURLにすぎないことに注意してください。
このStackOverflowの質問への回答で言及されているさまざまなライブラリ(JSoup、Javax.swing、Apache utils)を試して、HTMLをプレーンテキストに変換しました。
JSoupの使用例:
HTMLEditorKitの例:
java - JEditorPane でテキストの最後までのスクロールを無効にする
こんにちは
、HTMLEditorKit で JEditorPane を使用して、テキストを折り返す機能を備えた HTML テキストを表示しました。
問題は、.setText メソッドを使用してコンテンツを設定すると、そのテキストの最後まで自動的にスクロールすることです。
これを無効にするにはどうすればよいですか?
ありがとう。
java - HTMLParserDelegatorとParserCallbackが機能しない
だから私がやろうとしていることはとても簡単です。スクリプトタグのHTMLドキュメントを解析し、ParserDelegatorを使用し、ParserCallbackを使用してスクリプトタグを吐き出します。しかし、このプログラムを実行すると、何も実行されません。コールバックが呼び出されることはありません。私のhtmlファイルパスは正しく、スクリプトタグが含まれています。正しくフォーマットされています。
私が間違っていることについて何か考えはありますか?私は例(この例のように:http ://www.java2s.com/Tutorial/Java/0320__Network/HTMLparserbasedonHTMLEditorKitParserCallback.htm )を見てきましたが、基本的に同じことをしています(おそらくすべてをオーバーライドしていないことを除いて) ParserCallbackのメソッドであり、URLの代わりにファイルパスを使用しています)。前もって感謝します。
java - JEditorPane の html ロード済み要素へのアクセス/変更 + Unicode での HTMLEditorKit の問題 (Java)
それは長い質問になるので、我慢してください:)
私のアプリケーション
次のことを行う Java (JFrame GUI を使用) デスクトップ アプリケーションを開発しています。
- (.txt) ファイルをスキャンします。
- これらのファイルからいくつかの数値を解析し、いくつかの計算を実行して、最終的に結果を String 変数に格納します。
- これらの数値を特別な (テーブル) 形式で出力します。(注: 形式には一部の Unicode (アラビア語) 文字が含まれています。)
問題
最初の 2 つの部分はスムーズに進みました。しかし、第 3 部 (フォーマットされた出力) に来たとき、この特殊なフォーマットを表示する方法がわからなかったので、
- Java で特別な形式の出力 (テーブル) を表示する最良の方法は何ですか?
注:テーブルを適切にサポートしていないため、フォーマッターは役に立ちません。
解決策 1:
調査の結果、「html」などの特殊な形式を表示できる JEditorPane を使用できることがわかりました。そこで、必要な (テーブル) フォーマットで「html」ページを作成し、このページを [JEditorPane][4] に表示することにしました。私はそれを行い、いくつかのhtml要素の値をそれらの(.txt)ファイルから解析された数値に変更したくなるまでスムーズに進みました。
- html 要素 (例:
<td></td>
) にアクセスしてその値を変更するにはどうすればよいですか?
(.html) は、 を使用して JEditorPane 内にロードされることに注意してくださいsetPage(url)
。
Unicode 文字は正しく表示されますが、一部の要素の値を変更できませんでした (たとえば、 の値を に変更し<td> 000,000,000 </td>
たい<td> MainController.getCurrentTotalPayment() </td>
解決策 2:
HTMLDocument と HTMLEditorKit を使用する方法で、HTMLEditorKit を使用して (.html) を最初から作成し、.html を使用して JEditorPane に表示できますkit.insertHTML
。
上記の方法を使用してコンテンツを正常に追加しました。また、(MainController) クラスに格納されているため、(.txt) ファイルから解析された数値を追加することもできました。残念ながら、Unicode のアラビア文字は正しく表示されませんでした。
- これらの Unicode 文字を正しく表示するにはどうすればよいですか?
したがって、最初のソリューションには html 要素へのアクセスがなく、2 番目のソリューションには Unicode サポートがありません!
私の同僚は、私の MainController.java クラスにアクセスできる HTML ドキュメントで JSP コードを使用するようにアドバイスしてくれました。したがって、html 要素が既に変更された状態でページを JEditorPane にロードします。JSP の助けを借りずにそれを行う方法はありませんか?
JTidyの使用を推奨する人もいますが、Java の JDK 内でそれを行う方法はありませんか?
私はすべての可能な解決策を受け入れます。助けてください。
My Code:一部のコード コンテンツは関連性がないため省略されました
MainController.java
MyFormattedOuputSolutionOne.java:
MyFormattedOuputSolutionTwo.java:
htmlFormatTable.html:
私の長い複数の質問スレッドを読んでくれてありがとう。あなたの答えが待ちきれません。
アップデート:
この洞察を提供してくれた @Howard に感謝します。アラビア文字を対応する Unicode (例: ب = \u0628) に置き換えると問題なく動作しますが、各文字を置き換える必要なくそれを行う方法が必要ですよね?