Вы можете сделать это
<item name="match_parent" format="integer" type="dimen">-1</item>
<item name="wrap_content" format="integer" type="dimen">-2</item>
<dimen name="layout_height">@dimen/wrap_content</dimen>
. Вам, вероятно, лучше использовать HtmlTextWriter
или XMLWriter
, чем простой StringWriter
. Они позаботятся об экранировании за вас, а также о том, чтобы документ был правильно сформирован.
На этой странице показаны основы использования класса HtmlTextWriter
, суть которого:
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, classValue);
writer.RenderBeginTag(HtmlTextWriterTag.Div); // Begin #1
writer.AddAttribute(HtmlTextWriterAttribute.Href, urlValue);
writer.RenderBeginTag(HtmlTextWriterTag.A); // Begin #2
writer.AddAttribute(HtmlTextWriterAttribute.Src, imageValue);
writer.AddAttribute(HtmlTextWriterAttribute.Width, "60");
writer.AddAttribute(HtmlTextWriterAttribute.Height, "60");
writer.AddAttribute(HtmlTextWriterAttribute.Alt, "");
writer.RenderBeginTag(HtmlTextWriterTag.Img); // Begin #3
writer.RenderEndTag(); // End #3
writer.Write(word);
writer.RenderEndTag(); // End #2
writer.RenderEndTag(); // End #1
}
// Return the result.
return stringWriter.ToString();
Это действительно зависит от ваших целей и, в частности, от того, какую производительность вам действительно нужно предложить.
Я видел замечательные решения для разработки строго типизированного HTML (полный контроль модели, будь то веб-элементы управления ASP.NET или аналогичные им), которые просто добавляют невероятную сложность проекту. В других ситуациях это идеально.
В порядке предпочтения в мире C #,
Вы можете написать свои собственные классы с его методом Render и другими атрибутами, чтобы избежать большого беспорядка, если вы будете его часто использовать, а затем также использовать HTMLWriter или xmlwriter.
Эта логика используется на страницах asp.net, вы можете унаследовать от webControl и переопределить метод рендеринга , что отлично подходит, если вы разрабатываете элементы управления на стороне сервера.
Это может быть хороший пример.
С уважением
Вы можете использовать ASP.NET для генерации вашего HTML вне контекста веб-страниц. Вот статья , в которой показано, как это можно сделать.
Самый простой способ - использовать объект XmlWriter. Это можно использовать для создания действительного HTML и позаботится обо всех неприятных escape-последовательностях за вас.
Это не универсальное решение, однако, если ваша цель - иметь или поддерживать шаблоны электронной почты, то System.Web имеет встроенный класс MailDefinition . Этот класс используется элементами управления членством ASP.NET для создания электронных писем в формате HTML.
Выполняет тот же тип «замены строк», как упомянуто выше, но упаковывает все это в MailMessage для вас.
Вот пример из MSDN:
ListDictionary replacements = new ListDictionary();
replacements.Add("<%To%>",sourceTo.Text);
replacements.Add("<%From%>", md.From);
System.Net.Mail.MailMessage fileMsg;
fileMsg = md.CreateMailMessage(toAddresses, replacements, emailTemplate, this);
return fileMsg;
return string.Format(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"" ""http://www.w3.org/TR/html4/strict.dtd"">
<html>
<title>{0}</title>
<link rel=""stylesheet"" type=""text/css"" href=""style.css"">
</head>
<body>
", title);
Вы можете использовать объекты System.Xml.Linq
. Они были полностью переработаны по сравнению со старыми System.Xml
днями, которые делали создание XML с нуля по-настоящему утомительным.
Я думаю, кроме документа, вы могли бы легко сделать что-то вроде:
var html = new XElement("html",
new XElement("head",
new XElement("title", "My Page")
),
new XElement("body",
"this is some text"
)
);
Я знаю, что вы спрашивали о C #, но если вы Если вы хотите использовать любой язык .Net, то я настоятельно рекомендую Visual Basic для решения именно этой проблемы. Visual Basic имеет функцию под названием XML Literals, которая позволит вам писать подобный код.
Module Module1
Sub Main()
Dim myTitle = "Hello HTML"
Dim myHTML = <html>
<head>
<title><%= myTitle %></title>
</head>
<body>
<h1>Welcome</h1>
<table>
<tr><th>ID</th><th>Name</th></tr>
<tr><td>1</td><td>CouldBeAVariable</td></tr>
</table>
</body>
</html>
Console.WriteLine(myHTML)
End Sub
End Module
Это позволяет вам писать простой HTML с дырами в выражениях в старом стиле ASP и делает ваш код очень удобочитаемым. К сожалению, этой функции нет в C #, но вы можете написать отдельный модуль в VB и добавить его в качестве ссылки на свой проект C #.
Написание в Visual Studio также допускает правильные отступы для большинства XML-литералов и целых выражений. Отступ для дырок выражений лучше в VS2010.
Когда я решаю эту проблему на других языках, я иду на разделение кода и HTML. Что-то вроде:
1.) Создайте шаблон HTML. используйте заполнители [varname]
для отметки замененного / вставленного содержимого.
2.) Заполните переменные шаблона из массива или структуры / отображения / словаря
Write( FillTemplate(myHTMLTemplate, myVariables) ) # pseudo-code
Если вы хотите создать документ HTML, аналогичный тому, как вы создаете документ XML на C #, вы можете попробовать библиотеку с открытым исходным кодом Microsoft, Html Agility Pack .
Он предоставляет объект HtmlDocument, API которого очень похож на класс System.Xml.XmlDocument
.