如何在Java中将JTextPanes/JEditorPanes html内容清理为字符串?
我尝试从 JTextPane 获取漂亮的(干净的)文本内容。以下是来自 JTextPane
的示例代码:
JTextPane textPane = new JTextPane ();
textPane.setContentType ("text/html");
textPane.setText ("This <b>is</b> a <b>test</b>.");
String text = textPane.getText ();
System.out.println (text);
JTexPane
中的文本如下所示:
这是一个测试。
我得到这种打印到控制台:
<html>
<head>
</head>
<body>
This <b>is</b> a <b>test</b>.
</body>
</html>
我使用了 substring()
和/或 replace()
代码,但使用起来不舒服:
String text = textPane.getText ().replace ("<html> ... <body>\n , "");
有没有简单的函数从字符串中删除除 标记(内容)之外的所有其他标记?
有时 JTextPane
在内容周围添加
标签,所以我也想删除它们。
像这样:
<html>
<head>
</head>
<body>
<p style="margin-top: 0">
hdfhdfgh
</p>
</body>
</html>
我只想获取带有标签的文本内容:
This <b>is</b> a <b>test</b>.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我对
HTMLWriter
并覆盖startTag
和endTag
以跳过之外的所有标记。
我没有进行太多测试,似乎工作正常。一个缺点是输出字符串有大量空格。摆脱它应该不会太难。
I subclassed
HTMLWriter
and overrodestartTag
andendTag
to skip all tags outside of<body>
.I did not test much, it seems to work ok. One drawback is that the output string has quite a lot of whitespace. Getting rid of that shouldn't be too hard.
您可以使用 JEditorPane 本身使用的 HTML 解析器
HTMLEditorKit.ParserDelegator
。请参阅此示例和API 文档。
You could use the HTML parser that the JEditorPane uses itself,
HTMLEditorKit.ParserDelegator
.See this example, and the API docs.
我通过使用子字符串和替换方法找到了这个问题的解决方案:
有一个指向 StringEscapeUtils -libraries 的链接,它将转义字符转换回正常视图。感谢 Ozhan Duz 的建议。
(commons-lang - 下载)
I find solution to this problem by using substring and replace -methods:
There is link to StringEscapeUtils -libraries which convert escape characters back to normal view. Thanks to Ozhan Duz for the suggestion.
(commons-lang - download)