问题标签 [htmleditorkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1524 浏览

java - HTMLDocument、HTMLEditorKit 和空格

当我运行以下代码时:

我得到以下输出:

但是,如果我将值更改content" "

我得到这个输出:

为什么内容是为LeafElement构造的"x",而不是为构造的" "?我想LeafElement" ". 我做错了什么还是 or 有HTMLDocument问题HTMLEditorKit

0 投票
3 回答
9670 浏览

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

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

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

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

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

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

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

0 投票
2 回答
1129 浏览

java - 为什么 Swing Parser 的 handleText 不处理嵌套标签?

我需要转换一些具有嵌套标签的 HTML 文本,以使用 css 属性装饰“匹配”以突出显示它(如 firefox 搜索)。我不能只做一个简单的替换(例如,想想如果用户搜索“img”),所以我试图只在正文中进行替换(而不是在标签属性上)。

我有一个非常简单的 HTML 解析器,我认为应该这样做:

我的问题是,当我调试它时,handleText 会被包含标签的文本调用!就像它只深入一层。有谁知道为什么?我需要对 HTMLParser 做一些简单的事情(没有使用太多)来启用嵌套标签的“正确”行为吗?

PS - 我自己想通了 - 请参阅下面的答案。简短的回答是,如果您将其传递给 HTML,而不是预先转义的 HTML,它就可以正常工作。嗬!希望这对其他人有帮助。

0 投票
1 回答
13411 浏览

java - 将 HTML 插入 HTMLDocument 的正文

这似乎是一个如此简单的问题,但我遇到了这样的困难。

问题:

我有一些文本要插入到HTMLDocument. 该文本有时也会指定一些 html。例如:

HTMLEditorKit.insertHTML用来在指定的偏移量处插入它。这工作正常,除非偏移量位于文档的开头(偏移量 = 1)。在这种情况下,文本被插入到head文档中而不是body.

例子:

我使用字体标签,所以我现在插入的内容将位于没有属性的字体标签中,因此不会影响格式。我需要知道这一点,因为最后一个参数 ,是必需的,直到运行时insertTag我才能知道它的内容。stringToInsert如果文档中已有文本(例如“1234567890”),则输出如下:

但是,如果偏移量为 1 并且文档为空,则结果如下:

其他注意事项:

  • 这一切都是在JEditorPane. 如果有更好的方法JEditorPane用潜在的 HTML 替换 a 中的文本,我也会对这些想法持开放态度。

任何帮助,将不胜感激。 谢谢!

0 投票
1 回答
1679 浏览

java - 在 JEditorPane 中使用 HTML 格式化文本?

我正在尝试用 Java Swing 制作一个简单的电子邮件客户端。

我想允许用户以他们想要的任何方式来格式化他们的电子邮件,比如将文本的某些部分设置为粗体,其他部分设置为斜体等。换句话说,我正在尝试制作一个所见即所得的编辑器。格式化是在 HTML 中完成的。我正在使用 JEditorPane 来显示文本。

我尝试使用 JEditorPane 的 setText 和 getText 方法直接将标签添加到文本中。我可以使它适用于基本格式,但处理复杂格式非常困难。(例如,尝试从多标签元素中删除标签)

有没有更简单的方法来实现这一点?我看过 HTMLEditorKit 但它似乎不支持向特定字符串添加标签和/或替换特定字符串。

提前致谢。

0 投票
2 回答
206 浏览

html - 使用 Java 移除 HTML 移除对齐

我遇到了在 HTML 文档中删除对齐的问题。

我的问题是如何删除第一段的对齐而不影响第二段。如果我使用正则表达式,它也会删除第二段的对齐。我真的很感谢你对这个问题的任何评论。

0 投票
6 回答
48204 浏览

java - 在 Java 中将 HTML 转换为纯文本

我需要将 HTML 转换为纯文本。我对格式的唯一要求是在纯文本中保留新行。新行不仅应该在 的情况下显示,<br>而且其他标签也应该显示,例如<tr/></p>也导致新行。

用于测试的示例 HTML 页面是:

请注意,这些只是随机 URL。

我已经尝试了这个 StackOverflow 问题的答案中提到的各种库(JSoup、Javax.swing、Apache utils),以将 HTML 转换为纯文本。

使用 JSoup 的示例:

HTMLEditorKit 示例:


0 投票
3 回答
2255 浏览

java - 在 JEditorPane 中禁用滚动到文本末尾


,我使用带有 HTMLEditorKit 的 JEditorPane 来显示具有换行能力的 HTML 文本。
问题是当我使用 .setText 方法设置它的内容时,它会自动滚动到该文本的末尾。
我怎样才能禁用它?

谢谢。

0 投票
1 回答
1361 浏览

java - HTML ParserDelegator 和 ParserCallback 不起作用

所以我想做的很简单。我正在解析脚本标签的 HTML 文档,使用 ParserDelegator,并使用 ParserCallback 吐出脚本标签。但是当我运行这个程序时,它什么也没做。回调永远不会被调用。我的 html 文件路径是正确的,它确实包含脚本标签。它的格式也正确。

知道我做错了什么吗?我看过一些例子(比如这个:http ://www.java2s.com/Tutorial/Java/0320__Network/HTMLparserbasedonHTMLEditorKitParserCallback.htm )并且我在做基本相同的事情(除了我没有覆盖所有ParserCallback 的方法,我使用的是文件路径而不是 URL)。提前致谢。

0 投票
1 回答
4121 浏览

java - 使用 Unicode (Java) 访问/更改 JEditorPane 的 html 加载元素 + HTMLEditorKit 问题

这将是一个很长的问题,所以请耐心等待:)

我的应用程序

我正在开发一个 Java(带有 JFrame GUI)桌面应用程序,它执行以下操作:

  1. 扫描 (.txt) 文件。
  2. 从这些文件中解析一些数字,对它们执行一些计算,最后将结果存储在字符串变量中。
  3. 以特殊(表格)格式输出这些数字。(注意:格式包括一些 Unicode(阿拉伯)字符。)

问题

前两部分进行得很顺利。然而,当我来到第三部分(格式化输出)时,我不知道如何显示这种特殊格式,所以,

  • 在 Java 中显示特殊格式输出(表格)的最佳方式是什么?

注意:格式化 程序不会有帮助,因为它对表格没有适当的支持。

解决方案一:

我进行了研究,发现我可以使用 JEditorPane,因为它可以显示特殊格式,例如“html”。所以我决定创建一个具有所需(表格)格式的“html”页面,然后在 [JEditorPane][4] 上显示这个页面。我这样做并且进展顺利,直到我想将一些 html 元素的值更改为那些 (.txt) 文件中的解析数字。

  • 如何访问 html 元素(例如<td></td>)并更改其值?

请注意,(.html)是使用 .html 在 JEditorPane 中加载的setPage(url)

Unicode 字符显示正确,但我无法更改某些元素值(例如,我想将值更改<td> 000,000,000 </td><td> MainController.getCurrentTotalPayment() </td>

解决方案二:

我找到了一种解决方法,其中涉及使用 HTMLDocument 和 HTMLEditorKit,这样我可以使用 HTMLEditorKit 从头开始​​创建 (.html) 并使用kit.insertHTML.

我已经使用上述方法成功添加了内容,并且我还能够添加来自 (.txt) 文件的解析数字,因为我将它们存储在我的 (MainController) 类中。不幸的是,Unicode 阿拉伯字符没有正确显示。

  • 如何正确显示这些 Unicode 字符?

所以第一个解决方案缺乏对 html 元素的访问,而第二个解决方案缺乏 Unicode 支持!

我的同事建议我在可以访问我的 MainController.java 类的 html 文档中使用 JSP 代码。因此,将页面加载到 JEditorPane 中时已经更改了 html 元素。如果没有 JSP 的帮助,难道没有办法做到这一点吗?

其他一些人推荐使用JTidy,但在 Java 的 JDK 中没有办法做到这一点吗?

我对所有可能的解决方案持开放态度。请帮忙。

我的代码:一些代码内容被省略,因为它们不相关

主控制器.java

MyFormattedOutputSolutionOne.java:

MyFormattedOutputSolutionTwo.java:

htmlFormatTable.html:

感谢您阅读我冗长的多个问题线程,迫不及待地等待您的回答。

更新:

感谢@Howard 的这一见解,如果我用相应的 unicode(例如 ب = \u0628)替换阿拉伯字符,它可以正常工作,但必须有一种方法可以做到这一点而无需替换每个字符,对吧?