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

C# 使用tr生成HTML解析,如果不需要,如何替换/删除表行?,c#,html,C#,Html,我需要解析一个html模板。Html模板的一部分如下所示 <table> <tr> <td>Name</td> <td>&nbsp;</td> <tr> <tr> <td>City</td> <td>&nbsp;</td> <tr> <tr> <td>Country</td> <td&

我需要解析一个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>
以下是将通用数据替换为用户数据后的模板

<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>

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

为什么不生成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相比,它更简单、更安全。

我将其替换为在所需条件下运行,效果令人惊讶:

 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);

    }

为什么不生成HTML而不是替换部分呢?只需要替换用户数据,模板的主体对所有人都是相同的。因此,模板是静态模板在您的示例中,obj.City的值是多少?通过这样做,如果tr的值为null,它会消除或隐藏tr吗。因为我不想在列表中看到任何空白行output@user3406037:你忘了加问号;是的,它不会生成行,因此不需要隐藏或删除它。我尝试应用上面的代码,但问题是我必须使用静态模板,否则整个上下文需要更改,这是不必要的feasible@user3406037:然后我将为包含相关行的完整部分创建占位符。然后您可以用String.Empty轻松替换这些占位符。请详细说明rowsBuilder.AppendFormatrow、Name、obj.Name;是吗。。当我遇到错误时:输入字符串的格式不正确,如果我得到一些线索,那么我可以相应地进行更改
 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);

    }