Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在哪里可以找到一个好的HTMLEditorKit教程/参考,它实际上解释了如何编辑HTML文档?_Java_Html_Swing_Htmleditorkit - Fatal编程技术网

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

Java 我在哪里可以找到一个好的HTMLEditorKit教程/参考,它实际上解释了如何编辑HTML文档?,java,html,swing,htmleditorkit,Java,Html,Swing,Htmleditorkit,我的意图是编辑HTML文档,包括修改现有元素、删除元素和插入新元素 我已经阅读了HTMLEditorKit和相关类的文档,以及Sun Java Trail中的相关主题,但是关于实际HTML文档操作的信息很少。大多数讨论和示例都涉及阅读和解析HTML,而不是真正编辑HTML。一些谷歌搜索仍然没有给出一个适当的解决方案,并且试图通过一些编码尝试和错误来处理这项任务,大部分都会导致异常 我已经在SO中讨论了相关的问题和答案,但大多数答案都提出了一些替代方案,而我正在寻找JDK中的解决方案。也许HTML

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

我已经阅读了HTMLEditorKit和相关类的文档,以及Sun Java Trail中的相关主题,但是关于实际HTML文档操作的信息很少。大多数讨论和示例都涉及阅读和解析HTML,而不是真正编辑HTML。一些谷歌搜索仍然没有给出一个适当的解决方案,并且试图通过一些编码尝试和错误来处理这项任务,大部分都会导致异常

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

以下是我想学习如何执行的几个任务:

  • 替换某些文本字段中的文本
  • 基本编辑(查找/替换或
    元素的正则表达式
  • 为某些元素的边框着色
  • 完全移除某些标签(用于 示例闪存元件)

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

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

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


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

我不知道您的情况,但我认为如果您试图操作的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);
HTMLDocument doc=新的HTMLDocument();
HTMLEditorKit=新的HTMLEditorKit();
jEditorPane.setDocument(doc);
jEditorPane.setEditorKit(工具包);
kit.insertHTML(doc,doc.getLength(),“此标签将直接插入正文内部”,0,0,null);
insertHTML(doc,doc.getLength(),“
”,0,0,null); insertHTML(doc,doc.getLength(),putYourVariableHere,0,0,null);

通过这种方式,您可以完全控制html,而且加载速度比从外部html加载要快。

我不知道是否有任何教程介绍如何使用
HTMLDocument
HTMLEditorKit
在Java中编辑html文档。JDK实现有些有限,但在内部它创建了一个类似于DOM的元素树。您可以使用以下方法从HTMLDocument访问树:

这里的
doc
HTMLDocument
的一个实例。我认为使用
HTMLDocument
编辑HTML并不容易,但这是可能的,请参阅以下方法:

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

使用这些方法,您可以编写一个可视化HTML编辑器。只是为了显示HTML模型,调用对象上的方法

有关如何使用
HTMLDocument
模型操作加载到
JEditorPane
中的HTML内容的非常简单的示例,请参见的答案,特别是
propertyChange
偶数处理程序的代码


尽管为了更好地控制HTML,我还是建议使用一个创建HTML DOM并允许修改它的库。

您是在创建可视化编辑器还是可以在内存中编辑HTML结构?太糟糕了,我希望JDK中有一个解决方案。我试图避免外部工具,所以我首先考虑一个查找/替换解决方案。谢谢
HTMLDocument
实际上包含一个类似于DOM的树。它的设计目的是保留它不理解的所有内容,但如果您有标签,它不会删除标签。
Element html = doc.getRootElements()[0];