首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在哪里可以找到一个好的HTMLEditorKit教程/参考,这实际上解释了如何编辑HTMLEditorKit?

我在哪里可以找到一个好的HTMLEditorKit教程/参考,这实际上解释了如何编辑HTMLEditorKit?
EN

Stack Overflow用户
提问于 2009-09-21 10:08:03
回答 3查看 9.9K关注 0票数 5

我的意图是编辑HTML文档,包括修改现有元素、删除元素和插入新元素。

我读过HTMLEditorKit和相关类的文档,以及Sun's Java Trail中的相关主题,但是关于实际HTML文档操作的信息很少。大多数讨论和示例都涉及到读取和解析HTML,而不是真正地编辑它。一些谷歌仍然没有给出一个足够的解决方案,试图通过一些编码试验和错误来解决这个问题,大多数都会导致异常。

在这里,我已经讨论了相关的问题和答案,但大多数答案都提出了一些替代方案,而我正在寻找JDK中的解决方案。也许HTMLEditorKit对非swing应用程序没有什么用处,而在javax.swing之外还有一种替代方案吗?

下面是一些我想学习如何执行的任务:

  • 替换某些文本字段中的文本。
  • <script>元素的基本编辑(查找/替换或正则表达式)。
  • 给某些元素的边框涂上颜色。
  • 完全删除某些标记(例如,flash元素)。

假设HTMLEditorKit是JDK中最好的HTML编辑组件,您推荐什么教程或引用?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-21 14:06:25

HTMLEditorKit不是HTML编辑器,而是文档模型的编辑器,它允许将这些文档模型转换成HTML。编辑器工具包的内部模型不是"HTML“,而是基于DefaultStyledDocument的。令您困惑的是,存在一个HTMLDocument类。但是这只是一个DefaultStyledDocument的薄包装,所以它可以从HTML创建并保存为HTML。

您需要的是一个HTML解析器。试试jTidy。它将读取HTML,构建内部模型(保留<script>之类的内容,HTMLEditorKit将忽略这些内容)。然后,您可以使用DOM来修改模型。

也就是说,对于许多用例来说,使用正则表达式或简单的字符串搜索和替换来过滤HTML就足够了。

票数 2
EN

Stack Overflow用户

发布于 2011-07-10 13:37:26

我不知道你是怎么想的,但我认为如果你想要操作的html页面不是很复杂,那么你可以自己构建它:

代码语言:javascript
复制
HTMLDocument doc = new HTMLDocument();

HTMLEditorKit kit = new HTMLEditorKit();

jEditorPane.setDocument(doc);

jEditorPane.setEditorKit(kit);

kit.insertHTML(doc, doc.getLength(), "<label> This label will be inserted inside the body  directly </label>", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), "<br/>", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), putYourVariableHere, 0, 0, null);

这样,您就可以完全控制html,而且加载比从外部html加载它更快。

票数 2
EN

Stack Overflow用户

发布于 2011-08-14 19:03:37

如果有使用HTMLDocumentHTMLEditorKit编辑Java的教程,我就没有。JDK实现有一定的局限性,但在内部它创建了一个类似于DOM的元素树。您可以使用HTMLDocument方法从getRootElements()访问树:

代码语言:javascript
复制
Element html = doc.getRootElements()[0];

这里,docHTMLDocument的一个实例。我认为用HTMLDocument编辑HTML并不容易,但可以参见以下方法:

  • insertAfterEnd(Element elem, String htmlText)
  • insertAfterStart(Element elem, String htmlText)
  • insertBeforeEnd(Element elem, String htmlText)
  • insertBeforeStart(Element elem, String htmlText)
  • setInnerHTML(Element elem, String htmlText)
  • setOuterHTML(Element elem, String htmlText)

所有这些方法都接受Element作为进行编辑的参考点。您可以使用元素的方法遍历元素的树结构,我向您展示了如何获得对树根的引用。

使用这些方法,您可以编写可视化的HTML编辑器。只需显示HTML模型,就可以在setEditable(false)对象上调用JEditorPane方法。

有关如何操作加载到JEditorPane中的HTMLDocument模型中的HTML内容的一个非常简单的示例,请参见对另一个与HTML相关的问题的答复中的我的示例应用程序,特别是propertyChange甚至处理程序的代码。

虽然为了对HTML有更多的控制,我还是建议使用一个库来创建HTML并允许修改它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1453762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档