【问题标题】:Extract html part from string (include plain text and html part) using java使用java从字符串中提取html部分(包括纯文本和html部分)
【发布时间】:2020-11-18 07:00:30
【问题描述】:

我有一个来自电子邮件的输入流,可以像这样转换为字符串:

String content = "Hello world!\n"+
                 "Thank you!\n"+
                 "\n"+
                 "<html>\n" +
                 "<head>\n" +
                 "\t<meta id=\"leadId\" name=\"leadId\" content=\"6778130\"/>\n" +
                 "\t<title>testing</title>\n" +
                 "</head>\n" +
                 "<body>\n" +
                 "\t<span>testing - 20200727</span>\n" +
                 "</body>\n" +
                 "</html>"+
                 "\n" + 
                 "Have a good day!";

我想从这个字符串中提取 HTML 部分,我期望的结果是:

<html>
<head>
    <meta id="leadId" name="leadId" content="6778130"/>
    <titletesting</title>
</head>
<body>
    <span>testing - 20200727</span>
</body>
</html>

我之前尝试过 Jsoup,但它对我不起作用。 有谁知道它的其他解决方案? 我可以使用 javax.mail 吗(输入流本身)?如果是这样,我该怎么做?可以举个例子吗?

【问题讨论】:

  • 这是一个奇怪的电子邮件正文。看起来有人连接了多部分/替代消息的所有部分。如果是这样,那么只阅读一个 MIME 部分的正文是有意义的。
  • 试试String html = content.replaceFirst("(?s)^.*(&lt;html&gt;.*&lt;/html&gt;).*$", "$1");

标签: java html email jsoup jakarta-mail


【解决方案1】:

我的方法 - 使用正则表达式提取您感兴趣的文本。

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

 Pattern p = Pattern.compile("<html>.*</html>");
 Matcher m = p.matcher(inputString);
 String html = m.group();

然后您可以使用 JSoup.parse(html); 解析 html 并导航元素。 (如果您想使用 XPath 导航文档,也可以使用 HtmlUnit)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多