C# 使用tr生成HTML解析,如果不需要,如何替换/删除表行?
我需要解析一个html模板。Html模板的一部分如下所示C# 使用tr生成HTML解析,如果不需要,如何替换/删除表行?,c#,html,C#,Html,我需要解析一个html模板。Html模板的一部分如下所示 <table> <tr> <td>Name</td> <td> </td> <tr> <tr> <td>City</td> <td> </td> <tr> <tr> <td>Country</td> <td&
<table>
<tr>
<td>Name</td>
<td> </td>
<tr>
<tr>
<td>City</td>
<td> </td>
<tr>
<tr>
<td>Country</td>
<td> </td>
<tr>
</table>
以下是将通用数据替换为用户数据后的模板
<table>
<tr>
<td>Abc</td>
<td> </td>
<tr>
<tr>
<td>** **</td>
<td> </td>
<tr>
<tr>
<td>India</td>
<td> </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);
}