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

如何使用HTMLAgilityPack克隆并重复替换模板节点X次?

使用HTMLAgilityPack批量生成tbody表格行

实现步骤

  • 加载HTML模板文档,定位到id="transTable"的<tbody>节点
  • 提取模板中的<tr>节点作为重复模板,随后清空原tbody的内容
  • 遍历数据集合,为每个数据项复制模板<tr>,替换占位符(如##TransID##)
  • 将替换后的<tr>节点逐一追加到tbody中
  • 输出或保存处理后的HTML文档

代码示例

假设我们定义交易数据类:

public class Transaction
{
    public string TransID { get; set; }
    public string TermSeq { get; set; }
    public string TimeStamp { get; set; }
    public string Amount { get; set; }
}

核心处理逻辑:

// 加载HTML模板文件
var htmlDoc = new HtmlDocument();
htmlDoc.Load("你的模板文件路径.html");

// 定位目标tbody节点
var targetTbody = htmlDoc.GetElementbyId("transTable");
if (targetTbody == null) throw new InvalidOperationException("未找到id为transTable的tbody节点");

// 提取并复制tr模板,随后清空原tbody内容
var trTemplate = targetTbody.SelectSingleNode("./tr").CloneNode(true);
targetTbody.RemoveAllChildren();

// 模拟业务数据集合
var transactionList = new List<Transaction>
{
    new Transaction { TransID = "123", TermSeq = "1", TimeStamp = "2024-01-30", Amount = "400" },
    new Transaction { TransID = "53", TermSeq = "2", TimeStamp = "2024-01-31", Amount = "100" },
    new Transaction { TransID = "12444", TermSeq = "534", TimeStamp = "2024-01-31", Amount = "9" }
};

// 遍历数据生成表格行
foreach (var trans in transactionList)
{
    // 复制模板tr节点
    var newTr = trTemplate.CloneNode(true);
    
    // 替换占位符(两种方式可选)
    // 方式1:按td位置定位替换
    newTr.SelectSingleNode("./td[1]").InnerHtml = trans.TransID;
    newTr.SelectSingleNode("./td[2]").InnerHtml = trans.TermSeq;
    newTr.SelectSingleNode("./td[3]").InnerHtml = trans.TimeStamp;
    newTr.SelectSingleNode("./td[4]").InnerHtml = trans.Amount;
    
    // 方式2:按占位符文本定位替换(更灵活,不依赖td顺序)
    // newTr.SelectSingleNode("./td[text()='##TransID##']").InnerHtml = trans.TransID;
    // newTr.SelectSingleNode("./td[text()='##TermSeq##']").InnerHtml = trans.TermSeq;
    // newTr.SelectSingleNode("./td[text()='##TimeStamp##']").InnerHtml = trans.TimeStamp;
    // newTr.SelectSingleNode("./td[text()='##Amount##']").InnerHtml = trans.Amount;
    
    // 将生成的tr添加到tbody
    targetTbody.AppendChild(newTr);
}

// 保存处理后的HTML文件
htmlDoc.Save("处理后的文件路径.html");

关键说明

  • CloneNode(true)用于深度复制节点,确保模板的结构和文本被完整复制
  • RemoveAllChildren()清空原tbody内容,避免保留初始的模板tr
  • 两种占位符替换方式可按需选择,按文本定位的方式更适配模板结构调整的场景

内容的提问来源于stack exchange,提问作者Ahmed ilyas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:00:04