如何编辑 html 中的标签 Java 中的字符串

How to edit tags in html String in Java

我有一个 html 字符串:

<p>1</p> <p><img src="/filename.jpg" /></p> 
<p>2</p> <p><img src="/filename.jpg" alt="1324" width="600" height="180" /></p>
<p>3</p> <p><img style="border-width: 1px;" src=/filename.jpg" alt="" width="1000" height="300" /></p>
<p>4</p> <p><img style="border-width: 1px; max-width:100%" src=/filename.jpg" alt="" width="1000" height="300" /></p>

我需要搜索此字符串中的所有 img 标签。如果它没有 属性,请插入 style="max-width:100%" 作为它们的属性。如果那个 img 标签已经有 style 属性,那么我需要添加 属性 "max-width:100%"。我使用 Java

如何实现?

使用 Jsoup 库。
下载 Jar or using mvn.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

/**
 * Created by hwding on 3/8/17.
 */
public class Bar {
    public static void main(String[] args) {
        String string = "<p>1</p> <p><img src=\"/filename.jpg\" /></p> <p>2</p> <p><img src=\"/filename.jpg\" alt=\"1324\" width=\"600\" height=\"180\" /></p> <p>3</p> <p><img style=\"border-width: 1px;\" src=/filename.jpg\" alt=\"\" width=\"1000\" height=\"300\" /></p> <p>4</p> <p><img style=\"border-width: 1px; max-width:100%\" src=/filename.jpg\" alt=\"\" width=\"1000\" height=\"300\" /></p>";

        Document document = Jsoup.parse(string);
        Elements elements = document.select("img");

        elements.forEach(e -> {
            if(!e.hasAttr("style"))
                e.attr("style", "max-width:100%");
            System.out.println(e.toString());
        });
    }
}

输出:

<img src="/filename.jpg" style="max-width:100%">
<img src="/filename.jpg" alt="1324" width="600" height="180" style="max-width:100%">
<img style="border-width: 1px;" src="/filename.jpg&quot;" alt="" width="1000" height="300">
<img style="border-width: 1px; max-width:100%" src="/filename.jpg&quot;" alt="" width="1000" height="300">