使用c#编辑HTML并替换其中的某些文本
本文关键字:文本 替换 编辑 HTML 使用 | 更新日期: 2023-09-27 17:54:04
在我的c# WinForms程序中,我想生成一个HTML格式的报表。我现在正在做的是使用StringBuilder和textwwriter并编写所有html代码并将文件保存为html。它正在工作,但我想提高工作流程。
所以我的想法是有一个HTML模板,其中某些文本将被一个特殊的标签或其他东西所取代(我以前使用过Smarty模板,所以我的意思是类似的东西)。
想象下面的HTML代码:
<tr>
<td style="height: 80px; background-color:#F4FAFF">
<span class="testPropertiesTitle">Test Properties</span>
<br /><br />
<span class="headerComment"><b>Test Mode:</b> [TestMode]</span>
<br /><br />
<span class="headerComment"><b>Referenced DUT:</b> [RefDUT]</span>
<br /><br />
<span class="headerComment"><b>Voltage Failure Limit:</b> [VoltageLimit]</span>
<br /><br />
<span class="headerComment"><b>Current Failure Limit:</b> [CurrentLimit]</span>
<br /><br />
<span class="headerComment"><b>Test Mode:</b>[TestMode] </span>
</td>
</tr>
所以基本上我想做的是用c#程序中产生的某些字符串替换上面html中的[]之间的文本。
任何想法,代码片段,教程链接等…将不胜感激!
使用regex或快速而肮脏的替换来解析HTML是非常危险的。如果HTML被正确地"准备"(这是一件很难100%确定的事情),那么很多事情都可能出错。在Milde的回答中提到的HTML敏捷包是一个很好的方法,但它可能感觉像用大锤敲开坚果。
但是,如果您对将被解析的HTML有信心,那么以下内容应该可以让您快速进行:
string strTextToReplace = "<tr><td style='"height: 80px; background-color:#F4FAFF'"> <span class='"testPropertiesTitle'">Test Properties</span><br /><br /><span class='"headerComment'"><b>Test Mode:</b> [TestMode]</span><br /><br /><span class='"headerComment'"><b>Referenced DUT:</b> [RefDUT]</span><br/><br/><span class='"headerComment'"><b>Voltage Failure Limit:</b> [VoltageLimit]</span><br /><br /><span class='"headerComment'"><b>Current Failure Limit:</b> [CurrentLimit]</span><br /><br /><span class='"headerComment'"><b>Test Mode:</b>[TestMode] </span> </td></tr>";
Regex re = new Regex(@"'[(.*?)']");
MatchCollection mc = re.Matches(strTextToReplace);
foreach (Match m in mc)
{
switch (m.Value)
{
case "[TestMode]":
strTextToReplace = strTextToReplace.Replace(m.Value, "-- New Test Mode --");
break;
case "[RefDUT]":
strTextToReplace = strTextToReplace.Replace(m.Value, "-- New Ref DUT --");
break;
//Add additional CASE statements here
default:
break;
}
}
看看HTML敏捷包:
它是一个。net代码库,允许你解析"来自web"的HTML文件。解析器对"真实世界"的格式错误HTML非常宽容。对象模型与提出System.Xml的模型非常相似,但针对的是HTML文档(或流)。
看看razor模板引擎http://razorengine.codeplex.com/