1

ここに驚くべき行動があります。JTextPane を作成し、HTMLEditorKit を使用するように設定して、有効な HTML を入力します。しかし、デフォルトでは、Java の HTMLWriter は無効なHTML を作成します。ほとんどのアイテムは正しくシリアル化されていますが、img タグは終了スラッシュを失っているため、次のようになります。

<img src="https://localhost:9443/ccm/service/com.ibm.team.workitem.common.internal.model.IImageContentService/processattachment/_7rfpIMXdEeGLRroh_7O2yQ/workflow/resolve.gif" alt="Resolved" border="0"/>

は次のように書かれています。

<img src="https://localhost:9443/ccm/service/com.ibm.team.workitem.common.internal.model.IImageContentService/processattachment/_7rfpIMXdEeGLRroh_7O2yQ/workflow/resolve.gif" alt="Resolved" border="0">

すべてにデフォルトを使用しています。なぜうまくいかないのですか、簡単な修正方法はありますか?

コード スニペットを次に示します。

    JTextPane editor = new JTextPane();
    HTMLEditorKit htmlKit = new HTMLEditorKit();
    editor.setContentType("text/html");
    editor.setEditorKit(htmlKit);   
    editor.setText( '*<ADD SOME VALID HTML FROM A FILE>*'  );       
    HTMLDocument d = (HTMLDocument)editor.getDocument();
    StringWriter fw = new StringWriter();
    HTMLWriter aHTMLWriter = new HTMLWriter(fw,d);
    aHTMLWriter.write();
    String txt = fw.toString();
    //  Now  txt is not valid HTML ... eek!
4

2 に答える 2

1

残念ながら、HTMLEditorKit は HTML 3.2 しかサポートしていないため、img タグを閉じてはいけません。したがって、「正しく」動作しています。

1999年に改善要求が出されたので、もうすぐ実装されるかもしれません。

于 2012-07-19T09:50:17.223 に答える
0

実際には有効なHTMLですが、有効なXHTMLではありません。私の知る限り、XHTMLを出力することはできません。正規表現を使用して出力を後処理したり、FreeplaneがXHTMLWriterを作成したときのようにHTMLWriterを拡張したりできます

于 2012-07-19T09:58:01.613 に答える