当我运行以下代码时:
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。是我做错了什么,还是HTMLDocument或HTMLEditorKit有问题?
发布于 2013-11-10 00:08:23
的解释
这只是HTML中空格折叠的产物。由于您要插入的空格是两个<dyn/>标记之间唯一的空格,解析器会忽略它,因此不会用LeafElement表示它。
正如camickr所提到的,您必须使用不间断的空格实体来保留所有空格。但是,由于您无法控制HTML,因此最好的办法是定制HTMLEditorKit的解析器。也许下面的资源可能会有用:
希望这能有所帮助!
发布于 2009-08-21 19:04:16
我不太了解编辑器工具包,但也许你可以使用 代替“”。
https://stackoverflow.com/questions/1313487
复制相似问题