首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTMLDocument、HTMLEditorKit和空格

HTMLDocument、HTMLEditorKit和空格
EN

Stack Overflow用户
提问于 2009-08-21 18:15:03
回答 2查看 1.5K关注 0票数 2

当我运行以下代码时:

代码语言:javascript
复制
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);
        }

我得到以下输出:

代码语言:javascript
复制
LeafElement(dyn) 1,2
LeafElement(content) 2,3
LeafElement(dyn) 3,4
LeafElement(content) 4,5

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

代码语言:javascript
复制
    String content = " ";

我得到以下输出:

代码语言:javascript
复制
LeafElement(dyn) 1,2
LeafElement(dyn) 2,3
LeafElement(content) 3,4

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-10 00:08:23

  • I'm希望得到为什么这是happening.

的解释

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

  • Possible solution

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

  • HTMLEditorKit and Custom tags in the JEditorPane/JTextPane.
  • Parsing HTML files with HTMLEditorKit.
  • Parsing HTML with Swing.
  • The HTML Editor Kit

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2009-08-21 19:04:16

我不太了解编辑器工具包,但也许你可以使用&nbsp;代替“”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1313487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档