【问题标题】:HTMLDocument, HTMLEditorKit, and blank spacesHTMLDocument、HTMLEditorKit 和空格
【发布时间】:2010-11-21 18:13:12
【问题描述】:

当我运行以下代码时:

import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;

import javax.swing.text.BadLocationException;
import javax.swing.text.EditorKit;
import javax.swing.text.Element;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
    .
    .
    .
        String content = "x";
        String html = "<html><body><dyn/>" + content + "<dyn/></body></html>";
        final Reader reader = new StringReader(html);
        final EditorKit editorKit = new HTMLEditorKit();

        HTMLDocument hTMLDocument = new HTMLDocument();
        editorKit.read(reader, hTMLDocument, 0);
        Element defaultRootElement = hTMLDocument.getDefaultRootElement();
        Element branchElement = defaultRootElement.getElement(1).getElement(0);
        for (int i = 0; i < branchElement.getElementCount(); i++) {
            Element element = branchElement.getElement(i);
            System.out.print(element);
        }

我得到以下输出:

LeafElement(dyn) 1,2
LeafElement(content) 2,3
LeafElement(dyn) 3,4
LeafElement(content) 4,5

但是,如果我将content 的值更改为" "

    String content = " ";

我得到这个输出:

LeafElement(dyn) 1,2
LeafElement(dyn) 2,3
LeafElement(content) 3,4

为什么内容LeafElement 是为"x" 构造的,而不是为" " 构造的?我想要为" " 构造一个LeafElement。我做错了什么还是HTMLDocumentHTMLEditorKit 有问题?

【问题讨论】:

    标签: java dom htmleditorkit


    【解决方案1】:
    • 我希望解释为什么会发生这种情况。

    这只是 HTML 中空格折叠的产物。由于您要插入的空间是两个 &lt;dyn/&gt; 标记之间的唯一内容,因此解析器会忽略它,因此不会由 LeafElement 表示。

    • 可能的解决方案

    正如 camickr 所提到的,您必须使用不间断的空格实体来保留所有空格。但是,由于您无法控制 HTML,最好的办法是自定义 HTMLEditorKit 的解析器。也许以下资源可能会派上用场:

    希望这会有所帮助!

    【讨论】:

    • @Paul-Reiners 嘿!非常感谢您在这么久后接受答案。
    【解决方案2】:

    不太了解编辑器工具包,但也许您可以使用&amp;nbsp; 而不是“”。

    【讨论】:

    • 我已经考虑过了。 HTML 来自其他地方(并且比我所展示的要复杂得多)。我们必须插入“ ”字符,如果涉及到那当然是可能的。但我希望能解释为什么会发生这种情况。
    猜你喜欢
    • 2013-03-14
    • 2017-02-27
    • 2012-02-29
    • 2012-03-11
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多