gpt4 book ai didi

java - HTMLDocument、HTMLEditorKit 和空格

转载 作者:行者123 更新时间:2023-11-30 05:15:54 28 4
gpt4 key购买 nike

当我运行以下代码时:

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 的问题?

最佳答案

  • 我希望得到解释为什么会发生这种情况。

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

  • 可能的解决方案

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

希望这有帮助!

关于java - HTMLDocument、HTMLEditorKit 和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313487/

28 4 0