You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中修改HTML内容?更新最后一个div的日期时间

在Java中修改HTML最后一个评论的日期时间并存入数据库

在Java里处理这类HTML内容的修改,最省心的方式是用Jsoup这个专门的HTML解析库——它比手动字符串替换靠谱多了,能精准定位元素,不会因为HTML结构的微小变化就出错。下面是具体的实现步骤和代码示例:

1. 引入Jsoup依赖

首先需要在项目中引入Jsoup的依赖,如果你用Maven,在pom.xml中添加:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version> <!-- 建议使用最新稳定版 -->
</dependency>

如果是Gradle项目,在build.gradle中添加:

implementation 'org.jsoup:jsoup:1.17.2'

2. 解析HTML并修改目标内容

假设你的原始HTML字符串包含多个评论div,每个div里有用户名、日期时间和评论内容。我们可以通过Jsoup解析HTML,定位到最后一个评论的日期时间元素,替换为新值,再将修改后的HTML存入数据库。

完整代码示例

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class CommentHtmlUpdater {
    public static void main(String[] args) {
        // 你的原始HTML字符串(这里补全了示例结构,实际替换为你的真实内容)
        String originalHtml = "<div class=\"customclass recordwidget comments-section\" style=\"margin-bottom:8px; background-color:#f8f8f8; border-bottom:1px solid #f01928;border-top:1px solid #f01928; padding:8px; line-height:1.1;\">" +
                "<div class=\"comment-item\">" +
                "<b style=\"font-size:15px;\">Rob</b>" +
                "<span class=\"comment-datetime\">2024-05-20 14:30</span>" +
                "<p>First comment content</p>" +
                "</div>" +
                "<div class=\"comment-item\">" +
                "<b style=\"font-size:15px;\">Alice</b>" +
                "<span class=\"comment-datetime\">2024-05-21 09:15</span>" +
                "<p>Second comment content</p>" +
                "</div>" +
                "</div>";

        // 1. 解析HTML为可操作的Document对象
        Document doc = Jsoup.parse(originalHtml);

        // 2. 定位所有评论div(假设每个评论的外层div类名为comment-item)
        Elements commentDivs = doc.select(".comment-item");

        if (!commentDivs.isEmpty()) {
            // 3. 获取最后一个评论div
            Element lastCommentDiv = commentDivs.last();

            // 4. 找到该div中的日期时间元素(假设是class为comment-datetime的span)
            Element datetimeElement = lastCommentDiv.selectFirst(".comment-datetime");

            if (datetimeElement != null) {
                // 5. 设置新的日期时间值
                String newDatetime = "2024-06-01 16:45";
                datetimeElement.text(newDatetime);

                // 6. 获取修改后的HTML字符串
                String modifiedHtml = doc.html();
                System.out.println("修改后的HTML:\n" + modifiedHtml);

                // 7. 将修改后的HTML存入数据库(这里用JDBC示例)
                saveModifiedHtmlToDb(modifiedHtml);
            } else {
                System.err.println("未在最后一个评论中找到日期时间元素");
            }
        } else {
            System.err.println("未找到任何评论div");
        }
    }

    /**
     * 将修改后的HTML存入数据库的示例方法
     */
    private static void saveModifiedHtmlToDb(String modifiedHtml) {
        // 替换为你的数据库连接信息
        String dbUrl = "jdbc:mysql://localhost:3306/your_database";
        String dbUser = "your_username";
        String dbPassword = "your_password";

        String insertSql = "INSERT INTO comments_html (html_content, update_time) VALUES (?, NOW())";

        try (Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
             PreparedStatement pstmt = conn.prepareStatement(insertSql)) {

            pstmt.setString(1, modifiedHtml);
            int affectedRows = pstmt.executeUpdate();
            System.out.println("成功存入数据库,影响行数:" + affectedRows);

        } catch (SQLException e) {
            System.err.println("存入数据库失败:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

3. 关键注意事项

  • 元素定位的灵活性:如果你的HTML结构和示例不同,只需调整Jsoup的选择器即可。比如如果日期时间是直接的文本节点而非span,你可以通过lastCommentDiv.text()获取文本内容,替换其中的日期时间部分后再用lastCommentDiv.text(newText)设置回去,但这种方式不如用类选择器精准。
  • 避免手动字符串替换:不要用String.replace()这类粗暴的方式修改HTML,因为HTML结构可能存在空格、标签嵌套变化等情况,解析库能保证只修改目标元素的内容,不会破坏其他结构。
  • 结构化存储可选:如果后续需要单独查询用户名、日期或评论内容,也可以用Jsoup将每个评论的各个字段提取出来,分别存入数据库的对应列,而不是直接存整个HTML字符串。

内容的提问来源于stack exchange,提问作者Vara Mahalakhmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:48:03