HTML-шаблон компилируется в приложение как ресурс. фрагмент шаблона HTML выглядит следующим образом:
<A href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR>
%CAPTIONTEXT%
Мне это нравится, потому что HTML-файл большего размера содержит стили, режим без излишеств и т. Д.
Но, как всегда, они теперь хотят, чтобы опция Anchor tag была опущена, если ссылки нет. Кроме того, если заголовок отсутствует, тег BR следует пропустить.
Рассмотренная техника Nº1
Учитывая, что мне не нужно создавать целые фрагменты HTML в коде C #, я считал чем-то вроде:
%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%-->
Но это просто смешно, плюс один ответчик напоминает нам, что это пустая трата времени и может быть ошибкой.
Рассмотренная техника №2
Оптовая замена бирок:
%AnchorStartTag%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%AnchorEndTag%%CaptionStuff%
и выполняем поиск-замену, чтобы изменить
%AnchorStartTag%
с
"<A href=\"foo\" target=\"blank\""
Рассмотренная техника Nº3
я подумал о том, чтобы дать идентификатор важным HTML-элементам:
<A id="anchor" href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR id="captionBreak">
%CAPTIONTEXT%
, а затем с помощью синтаксического анализатора HTML DOM для программного удаления узлов. Но нет простого доступа к надежному анализатору HTML DOM. Если бы вместо HTML был HTML, я бы использовал различные встроенные / нативно доступные парсеры 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 в коде - это кошмар. Это кошмар для написания, кошмар для отладки и кошмар для обслуживания - и это усложнит жизнь следующему парню. я надеюсь на другое решение - так как я am следующий парень.