从HTML字符串创建HTMLDocument(Java)

从HTML字符串创建HTMLDocument(Java),java,html,string,dom,Java,Html,String,Dom,我正在研究一个方法,它接受一个HTML字符串并返回一个类似的 javax.swing.text.html.HTMLDocument 最有效的方法是什么 我目前的做法是使用SAX解析器来解析HTML字符串。我跟踪我何时点击打开的标签(例如,)。当我点击相应的关闭标记(例如,)时,我会将斜体样式应用于我在两者之间点击的字符 这当然有效,但速度不够快。有更快的方法吗?尝试使用HtmlEditorKit类。它支持解析可直接从String(例如通过StringReader)读取的HTML内容。关于如何

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

 javax.swing.text.html.HTMLDocument
最有效的方法是什么

我目前的做法是使用SAX解析器来解析HTML字符串。我跟踪我何时点击打开的标签(例如,)。当我点击相应的关闭标记(例如,)时,我会将斜体样式应用于我在两者之间点击的字符


这当然有效,但速度不够快。有更快的方法吗?

尝试使用
HtmlEditorKit
类。它支持解析可直接从
String
(例如通过
StringReader
)读取的HTML内容。关于如何做到这一点

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


你可以尝试使用这种方法。只需添加一个随机元素,然后用您的HTML字符串替换它。

同意mouser的观点,但要做一点小小的修改

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

只是不要忘记:“为了正确地工作,文档必须有一个HTMLEditorKit.Parser集。如果文档是通过createDefaultDocument方法从HTMLEditorKit创建的,则会出现这种情况。考虑这个测试案例:PultValueTestMauMHTMLObjtudioTo()抛出异常{最后的字符串HTML=“\n”+“\n”+“\n”+“我的第一个标题\n”+“\n”+“p>我的第一段。它转储以下内容:

[0,1][[0,1][]我有点担心这是因为

HTMLEditorKit
对HTML的支持很弱;根据javadoc的说法,“默认支持由这个类提供,它支持HTML 3.2版(带有一些扩展),并且正在向4.0版迁移”——我担心您需要在回调中手动处理标记——不确定这是否比您原来的方法更好:(
Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
htmlKit.read(stringReader, htmlDoc, 0);