Ian*_*oyd 3 html language-agnostic code-generation
html模板作为资源编译到应用程序中.一个片段的HTML模板的样子:
<A href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR>
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)
我喜欢这样,因为较大的资源HTML文件包含样式,无怪癖模式等.
但总是如此,他们现在想要在没有链接时应该省略Anchor标签的选项.如果没有标题,则应省略BR标记.
鉴于我不想在C#代码中构建完整的HTML片段,我考虑过如下:
%ANCHORSTARTTAGPREFIX%<A href="%PANELLINK%" target="_blank">%ANCHORSTARTTAGPOSTFIX%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%ANCHORENDTAGPREFIX%</A>%ANCHORENDTAGPOSTFIX%CAPTIONPREFIX%<BR>
%CAPTIONTEXT%%CAPTIONPOSTFIX%
Run Code Online (Sandbox Code Playgroud)
我可以使用前缀和后缀将HTML代码转换为:
<!--<A href="%PANELLINK%" target="_blank">-->
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
<!--</A>--><!--<BR>
%CAPTIONTEXT%-->
Run Code Online (Sandbox Code Playgroud)
但这只是荒谬的,加上一个回答者提醒我们它浪费了带宽,并且可能是错误的.
批发更换标签:
%AnchorStartTag%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%AnchorEndTag%%CaptionStuff%
Run Code Online (Sandbox Code Playgroud)
并做一个find-replace来改变
%AnchorStartTag%
Run Code Online (Sandbox Code Playgroud)
同
"<A href=\"foo\" target=\"blank\""
Run Code Online (Sandbox Code Playgroud)
我考虑过为重要的HTML元素提供ID:
<A id="anchor" href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR id="captionBreak">
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)
然后使用HTML DOM解析器以编程方式删除节点.但是没有简单的方法可以访问值得信赖的HTML DOM解析器.如果HTML是xhtml,我将使用各种内置/本机可用的xml DOM解析器.
到目前为止我实际拥有的是:
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%";
Run Code Online (Sandbox Code Playgroud)
我已经想要挖出我的眼球了.在代码中构建HTML是一场噩梦.写作是一场噩梦,调试的噩梦和维持的噩梦 - 这会让下一个人感到困难.我希望有另一个解决方案 - 因为我是下一个人.