由来

针对Http请求中返回的Http内容,Hutool使用此工具类来处理一些HTML页面相关的事情。
比如我们在使用爬虫爬取HTML页面后,需要对返回页面的HTML内容做一定处理,比如去掉指定标签(例如广告栏等)、去除JS、去掉样式等等,这些操作都可以使用HtmlUtil完成。

方法

HtmlUtil.escape

转义HTML特殊字符,包括:

  1. ' 替换为 '
  2. " 替换为 "
  3. & 替换为 &
  4. < 替换为 &lt;
  5. > 替换为 &gt;
    1. String html = "<html><body>123'123'</body></html>";
    2. // 结果为:&lt;html&gt;&lt;body&gt;123&#039;123&#039;&lt;/body&gt;&lt;/html&gt;
    3. String escape = HtmlUtil.escape(html);

    HtmlUtil.unescape

    还原被转义的HTML特殊字符
    1. String escape = "&lt;html&gt;&lt;body&gt;123&#039;123&#039;&lt;/body&gt;&lt;/html&gt;";
    2. // 结果为:<html><body>123'123'</body></html>
    3. String unescape = HtmlUtil.unescape(escape);

    HtmlUtil.removeHtmlTag

    清除指定HTML标签和被标签包围的内容
    1. String str = "pre<img src=\"xxx/dfdsfds/test.jpg\">";
    2. // 结果为:pre
    3. String result = HtmlUtil.removeHtmlTag(str, "img");

    HtmlUtil.cleanHtmlTag

    清除所有HTML标签,但是保留标签内的内容
    1. String str = "pre<div class=\"test_div\">\r\n\t\tdfdsfdsfdsf\r\n</div><div class=\"test_div\">BBBB</div>";
    2. // 结果为:pre\r\n\t\tdfdsfdsfdsf\r\nBBBB
    3. String result = HtmlUtil.cleanHtmlTag(str);

    HtmlUtil.unwrapHtmlTag

    清除指定HTML标签,不包括内容
    1. String str = "pre<div class=\"test_div\">abc</div>";
    2. // 结果为:preabc
    3. String result = HtmlUtil.unwrapHtmlTag(str, "div");

    HtmlUtil.removeHtmlAttr

    去除HTML标签中的指定属性,如果多个标签有相同属性,都去除
    1. String html = "<div class=\"test_div\"></div><span class=\"test_div\"></span>";
    2. // 结果为:<div></div><span></span>
    3. String result = HtmlUtil.removeHtmlAttr(html, "class");

    HtmlUtil.removeAllHtmlAttr

    去除指定标签的所有属性
    1. String html = "<div class=\"test_div\" width=\"120\"></div>";
    2. // 结果为:<div></div>
    3. String result = HtmlUtil.removeAllHtmlAttr(html, "div");

    HtmlUtil.filter 过滤HTML文本,防止XSS攻击

    1. String html = "<alert></alert>";
    2. // 结果为:""
    3. String filter = HtmlUtil.filter(html);