从 HTML 字符串创建 HTMLDocument(在 Java 中)

发布于 2024-11-20 00:00:32 字数 259 浏览 6 评论 0原文

我正在研究一种方法,该方法接受 HTML 字符串并返回类似的

 javax.swing.text.html.HTMLDocument

最有效方法是什么?

我目前执行此操作的方法是使用 SAX 解析器来解析 HTML 字符串。我会跟踪何时点击开放标签(例如,)。当我点击相应的结束标记(例如,)时,我将斜体样式应用于我点击的字符之间。

这当然有效,但速度不够快。有没有更快的方法来做到这一点?

I'm working on a method that takes a String of HTML and returns an analogous

 javax.swing.text.html.HTMLDocument

What is the most efficient way of doing this?

The way I'm currently doing this is to use a SAX parser to parse the HTML string. I keep track of when I hit open tags (for example, <i>). When I hit the corresponding close tag (for example, </i>), I apply the italics style to the characters I've hit in between.

This certainly works, but it's not fast enough. Is there a faster way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

玉环 2024-11-27 00:00:32

同意mouser的观点,但有一个小修正

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
htmlKit.read(stringReader, htmlDoc, 0);

Agree with mouser but a small correction

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
htmlKit.read(stringReader, htmlDoc, 0);
︶ ̄淡然 2024-11-27 00:00:32

尝试使用 HtmlEditorKit 类。它支持解析可直接从String 读取的HTML 内容(例如通过StringReader)。 似乎有一篇文章介绍了如何执行此操作。

编辑:举个例子,基本上我认为可以这样做(执行代码后, htmlDoc 应包含加载的文档...):

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
parser.parse(stringReader, htmlDoc.getReader(0), true);

Try to use HtmlEditorKit class. It supports parsing of HTML content that can be read directly from String (e.g. through StringReader). There seems to be an article about how to do this.

Edit: To give an example, basically I think it could be done like this (aftrer the code is executed, htmlDoc should contain the loaded document...):

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
parser.parse(stringReader, htmlDoc.getReader(0), true);
扭转时空 2024-11-27 00:00:32

您可以尝试使用 HTMLDocument.setOuterHTML 方法。只需添加一个随机元素,然后将其替换为您的 HTML 字符串。

You could try to use the HTMLDocument.setOuterHTML method. Simply add a random element and replace it afterwards with your HTML string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文