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

时间:2009-09-21 10:08:03

标签: java html swing htmleditorkit

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

我已经阅读了HTMLEditorKit和相关类的文档,以及Sun的Java Trail中的相关主题,但是关于实际HTML文档操作的信息很少。大多数讨论和示例涉及阅读和解析HTML,而不是真正编辑它。一些谷歌搜索仍然没有产生足够的解决方案,并试图通过一些编码试验和错误解决任务主要导致例外。

我已经在SO中查阅了相关问题和答案,但大多数答案提出了一些替代方案,而我正在寻找JDK中的解决方案。也许HTMLEditorKit对非摆动应用程序没有多大用处,javax.swing之外还有另外一种选择?

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

  • 替换某些文本字段中的文字。
  • 基本编辑(查找/替换或 <script>元素的正则表达式。
  • 为某些元素的边框着色。
  • 完全删除某些标签(for 示例flash元素)。

假设HTMLEditorKit是JDK中最好的HTML编辑组件,你推荐什么教程或参考?

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

我不了解你,但我想如果你试图操纵的html页面不是很复杂,那么你可以自己建造它:

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 :(得分:0)

如果存在使用HTMLDocumentHTMLEditorKit编辑HTML文档的任何教程,我不会这样做。 JDK实现有些限制,但在内部它创建了一个类似于DOM的元素树。您可以使用getRootElements()方法从HTMLDocument访问树:

Element html = doc.getRootElements()[0];

此处docHTMLDocument的实例。我认为使用HTMLDocument编辑HTML并不容易,但有可能,请参阅以下方法:

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

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

有关如何使用JEditorPane模型操作加载到HTMLDocument的HTML内容的一个非常简单的示例,请参阅my sample application答案中的another HTML-related question,特别是propertyChange甚至处理程序的代码。

虽然要对HTML有更多控制权,但我建议使用一个创建HTML DOM的库并允许修改它。