繁体   English   中英

如何在保留格式的同时删除这些html元素?

[英]How can I remove those html elements, while retain the formatting?

我尝试实现Java邮件api以读取消息正文并将其存储到文本文件(如果其中包含内容)。

我可以阅读邮件的正文,但是它带有一些html元素。

我添加了下面使用的代码。

Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");

    Session session = Session.getDefaultInstance(props, null);
    Store store = session.getStore("imaps");
    store.connect("hostname", "username", "password");
    String result = null;
    Folder inbox = store.getFolder("Inbox");
    inbox.open(Folder.READ_ONLY);
    javax.mail.Message messages[]=inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
    for(Message message:messages) {
        System.out.println(Jsoup.parse(message).text());
    }

如何删除检索到的消息中的html元素?

请任何人帮我解决这个问题。

要删除邮件中的所有HTML标签,请使用jsoups text()方法。

范例程式码

String htmlString = "<div class=\"WordSection1\"> <p class=\"MsoNormal\">Hi<br> <br> <br> <br> Data is written in this mail.<br> <br> <br> <br> <o:p></o:p></p> </div>";

System.out.println(Jsoup.parse(htmlString).text());

输出量

Hi Data is written in this mail.

如果特定元素应导致换行符类似于呈现的HTML源代码,则可以添加换行符,然后避免使用 jsoups的clean方法进行 漂亮的打印

prettyPrint

如果禁用,HTML输出方法将不会重新格式化输出,并且输出通常看起来像输入。

范例程式码

String htmlString = "<div class=\"WordSection1\"> <p class=\"MsoNormal\">Hi<br> <br> <br> <br> Data is written in this mail.<br> <br> <br> <br> <o:p></o:p></p> </div>";

htmlString = htmlString.replaceAll("<br>", System.getProperty("line.separator") + "<br>"); // do replacements for all tags that should result in line-breaks

Document.OutputSettings settings = new OutputSettings();
settings.prettyPrint(false); // to keep line-breaks

String cleanedSource = Jsoup.clean(htmlString, "", Whitelist.none(), settings);

System.out.println(cleanedSource);

输出量

 Hi



 Data is written in this mail.
[... four more empty lines]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM