使用 tr 生成 HTML 解析,如果不需要,如何替换/删除表行

本文关键字:替换 删除 何替换 HTML 生成 tr 解析 如果 不需要 如果不 使用 | 更新日期: 2023-09-27 18:37:16

我需要解析一个html模板。Html 模板的一部分如下所示

<table>
<tr>
<td>Name</td>
<td>&nbsp;</td>
<tr>
<tr>
<td>City</td>
<td>&nbsp;</td>
<tr>
<tr>
<td>Country</td>
<td>&nbsp;</td>
<tr>
</table>

然后,使用 C# 将上述模板替换为用户数据。

if (obj.City == null || obj.City == "Specific Parameter")
{
    strGetBody = strGetBody.Replace("City", "");
}
else
{
    strGetBody = strGetBody.Replace("City", obj.City);
}

以下是将通用数据替换为用户数据后的模板

<table>
<tr>
<td>Abc</td>
<td>&nbsp;</td>
<tr>
<tr>
<td>**&nbsp;**</td>
<td>&nbsp;</td>
<tr>
<tr>
<td>India</td>
<td>&nbsp;</td>
<tr>
</table>

我想解析值为空的 tr。如果该行的 td 值为 null,是否有任何可能的方法可以解析 tr 元素并删除整行?

使用 tr 生成 HTML 解析,如果不需要,如何替换/删除表行

为什么不生成 HTML 而不是替换其中的一部分?下面是一个可能的实现:

StringBuilder rowsBuilder = new StringBuilder();
string row = "<tr><td>{0}</td><td>{1}</td></tr>";
if (obj.Name != null)
{
    rowsBuilder.AppendFormat(row, "Name", obj.Name);
}
if (obj.City != null)
{
    rowsBuilder.AppendFormat(row, "City", obj.City);
}
if (obj.Country != null)
{
    rowsBuilder.AppendFormat(row, "Country", obj.Country);
}
string html = string.Format("<table>{0}</table>", rowsBuilder.ToString());

它比使用 String.Replace 更简单、更故障安全。

我在所需条件下用<tr style="display:none">替换了<tr>,效果非常:)

 if (obj.City == null || obj.City == "Specific Parameter")
    {
      if(strGetBody.Contains("<tr id='"city'">"))
        {
        strGetBody = strGetBody.Replace("<tr id='"city'">", "<tr id='"city'" style='"display:none'">");
        }
    }
    else 
    {
       strGetBody = strGetBody.Replace("City", obj.City);
    }