我们的 XML 编辑器使用 JEditorPane 来显示使用样式表转换的 HTML。当传入的 XML 包含组合宏(例如 x̄)时,系统会在 JEditorPane 中渲染期间挂起,尽管生成的 HTML 可以毫无问题地显示在浏览器中。它使用自定义的 HTMLEditorKit 和 JEditorPane。目前使用的是 JDK 11。
我尝试用 XML 中的字符引用
̄
替换组合宏宏。
textContent = textContent.replaceAll("\\u0304", "̄");
原创,
\<p id="p0007" num="0007"\>LCL=x̄-(t\*(s /√n));\</p\>
之后,
\<p id="p0007" num="0007"\>LCL=x̄-(t\*(s /√n));\</p\>
但是在 JEditorPane 中渲染时系统仍然挂起。
如有任何建议或建议,我们将不胜感激。
最好的,
感谢 Holger 和 VGR 的解答。根据提示,我发现问题是由自定义的HTMLEditorKit引起的。为了快速修复在不系统挂起的情况下显示 HTML 的问题,我添加了一个开关,以避免在识别出组合宏宏时使用有问题的自定义编辑套件:
private void setHtmlEditorContentType(String xmlText) {
if (this.hasCombingMacro(xmlText) {
//For handling tif images but may have performance issue
patchEditor = this.getPatchedHTMLEditorKit();
patchEditor.install(webBrowser);
webBrowser.setEditorKitForContentType("text/html", patchEditor);
}else {
patchEditor.deinstall(webBrowser);
webBrowser.setEditorKit(null);
webBrowser.setContentType("text/html");
}
}
//Check Combing Macro
private boolean hasCombingMacro(String xmlText) {
if(xmlText.contains("\u0304") || xmlText.contains("̄")) {
return true;
}
return false;
}