html 模板作为资源编译到应用程序中。HTML 模板的片段如下所示:
<A href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR>
%CAPTIONTEXT%
我喜欢这样,因为较大的资源 HTML 文件包含样式、无怪癖模式等。
但与往常一样,他们现在希望选择在没有链接的情况下省略 Anchor 标签。此外,如果没有标题,则应省略 BR 标签。
考虑的技术 Nº1
鉴于我不想在 C# 代码中构建整个 HTML 片段,我考虑过类似的事情:
%ANCHORSTARTTAGPREFIX%<A href="%PANELLINK%" target="_blank">%ANCHORSTARTTAGPOSTFIX%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%ANCHORENDTAGPREFIX%</A>%ANCHORENDTAGPOSTFIX%CAPTIONPREFIX%<BR>
%CAPTIONTEXT%%CAPTIONPOSTFIX%
我的想法是我可以使用前缀和后缀将 HTML 代码转换为:
<!--<A href="%PANELLINK%" target="_blank">-->
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
<!--</A>--><!--<BR>
%CAPTIONTEXT%-->
但这太荒谬了,再加上一位回答者提醒我们,它浪费了带宽,而且可能是错误的。
考虑的技术 Nº2
批发更换吊牌:
%AnchorStartTag%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%AnchorEndTag%%CaptionStuff%
并进行查找替换以进行更改
%AnchorStartTag%
和
"<A href=\"foo\" target=\"blank\""
考虑的技术 Nº3
我考虑给重要的 HTML 元素一个 ID:
<A id="anchor" href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR id="captionBreak">
%CAPTIONTEXT%
然后使用 HTML DOM 解析器以编程方式删除节点。但是要获得一个值得信赖的 HTML DOM 解析器并不容易。如果 HTML 改为 xhtml,我将使用各种内置/原生可用的 xml DOM 解析器。
考虑的技术 Nº4
到目前为止,我实际上拥有的是:
private const String htmlEmptyTemplate =
@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN\"""+Environment.NewLine+
@" ""http://www.w3.org/TR/html4/strict.dtd"">"+Environment.NewLine+
@"<HTML>"+Environment.NewLine+
@"<HEAD>"+Environment.NewLine+
@" <TITLE>New Document</TITLE>"+Environment.NewLine+
@" <META http-equiv=""X-UA-Compatible"" content=""IE=edge"">"""+Environment.NewLine+
@" <META http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"">"+Environment.NewLine+
@"</HEAD>"+Environment.NewLine+
@""+Environment.NewLine+
@"<BODY style=""margin: 0 auto"">"+Environment.NewLine+
@" <DIV style=""text-align:center;"">"+Environment.NewLine+
@" %ContentArea%"+Environment.NewLine+
@" </DIV>" + Environment.NewLine +
@"</BODY>" + Environment.NewLine +
@"</HTML>";
private const String htmlAnchorStartTag =
@"<A href=""%PANELLINK%"" target=""_blank"">";
//Image is forbidden from having end tag
private const String htmlImageTag =
@"<IMG border=""0"" src=""%PANELIMAGE%"" style=""%IMAGESTYLE%"">";
private const String htmlCaptionArea =
@"<BR>%CAPTIONTEXT%";
我已经想挖出我的眼球了。在代码中构建 HTML 是一场噩梦。编写是一场噩梦,调试是一场噩梦,维护是一场噩梦——这会让下一个人的事情变得困难。我希望有另一个解决方案 - 因为我是下一个人。