替换String对象中的HTML标记内的内容

时间:2017-11-27 07:19:34

标签: java

我要在所有锚标签内替换“href”的内容。 整个HTML主体在String对象中接收。

标签锚点有多次出现。我要在所有锚标签中替换“href”的值。

Parent.java {
  ...
  String htmlBody;
}

示例:

htmlBody="
<HTML>
<head>...</head>
<body>
   <table>
      <tr><td>
          <table>
            <tr><td>
                <a href="https://www.test.com/shop/s111/product/pro1"><img     src="..."></a>
            </td></tr>
            <tr><td>
                <a href="https://www.test.com/shop/os222/product/pro2"><img src="..."></a>
            </td></tr>
        </table>
    ...
</body>
</HTML>";

请注意锚标记内的每个href值略有不同。

我想知道在Java中实现这一目标的最佳方法。

1 个答案:

答案 0 :(得分:0)

此解决方案不会检查输入HTML的有效性,并假设URL是双引号:

    StringBuffer buf = new StringBuffer();
    Pattern pattern = Pattern.compile("<a href=\"([^\"]*)\">");
    Matcher matcher = pattern.matcher(htmlBody);
    while (matcher.find()) {
        String url = replaceUrl(matcher.group(1));
        matcher.appendReplacement(buf, "<a href=\"" + url + "\">");
        System.out.println(matcher.group(0));
    }
    matcher.appendTail(buf);
    System.out.println(buf.toString());