Установка атрибутов в шаблоне HTML – примеры C#
HTML Template
Шаблон HTML (HTML Template) представляет собой стандартный HTML-файл, содержащий специальные встроенные выражения, обозначенные двойными фигурными скобками, которые сопоставляют источник входных данных с разметкой HTML-страницы. Во время обработки шаблона эти встроенные выражения будут заменены соответствующими значениями данных, как указано в правилах, изложенных в статье HTML Template.
Библиотека Aspose.HTML for .NET позволяет устанавливать атрибуты в шаблоне HTML и контролировать наличие атрибутов при заполнении шаблонов. В следующей статье показано, как использовать эту функцию в примерах C#.
Установить атрибут в шаблоне HTML
Атрибуты используются для HTML-элементов, чтобы предоставить дополнительную информацию об элементе, указать его характеристики или задать такие свойства, как идентификатор, класс, стиль и т. д. Эти атрибуты указываются в открывающем теге HTML-элемента и могут быть установлены с использованием статических значений или динамические данные (встроенные выражения):
- Статические значения – это фиксированное содержимое HTML, такое как текст, имена элементов и атрибутов, которые остаются неизменными в конечном выводе HTML.
- Динамические данные – это данные, которые могут изменяться и обычно предоставляются источником данных. Динамические данные вставляются в шаблон HTML с помощью встроенных выражений.
Установите атрибут checked
для флажка HTML (HTML Checkbox)
Например, возьмем следующий HTML-шаблон:
1<input type="checkbox" {{attr}} disabled />
Это элемент формы флажка с отключенным набором атрибутов, который делает его недоступным для редактирования, и меткой {{attr}}
, к которой можно добавить атрибут на основе источника данных. В этой метке, используя следующий источник данных, мы установим атрибут «checked», который будет отображать галочку в этом флажке HTML при рисовании:
1<Data><attr>checked</attr></Data>
Полный пример заполнения шаблона на C# выглядит так:
1// Create a template with a string of HTML code
2var htmlCode = "<input type=\"checkbox\" disabled {{attr}} />";
3
4// Set data for the template in XML format
5var dataSource = "<Data><attr>checked</attr></Data>";
6
7// Convert template to HTML
8using (var htmlDocument = Converter.ConvertTemplate(htmlCode, string.Empty,
9 new TemplateData(new TemplateContentOptions(dataSource, TemplateContent.XML)),
10 new TemplateLoadOptions()))
11{
12 // Request the input checkbox element that we specified in the template
13 var input = (HTMLInputElement)htmlDocument.GetElementsByTagName("input").First();
14
15 // Check if it has a checkmark
16 Console.WriteLine("Checked: " + input.Checked);
17 Console.WriteLine("Attributes.Length: " + input.Attributes.Length);
18 Console.WriteLine("Attributes[0].Name: " + input.Attributes[0].Name);
19 Console.WriteLine("Attributes[1].Name: " + input.Attributes[1].Name);
20 Console.WriteLine("Attributes[2].Name: " + input.Attributes[2].Name);
21
22 /*
23 This example produces the following results:
24
25 Checked: True
26 Attributes.Length: 3
27 Attributes[0].Name: type
28 Attributes[1].Name: disabled
29 Attributes[2].Name: checked
30 */
31
32 // Save the HTML document to a file
33 htmlDocument.Save(Path.Combine(OutputDir, "out-checked.html"));
34
35 // Prepare a path to the output image file
36 string outputPath = Path.Combine(OutputDir, "out-checked.png");
37
38 // Convert HTML to PNG using RenderTo() method
39 htmlDocument.RenderTo(new ImageDevice(new ImageRenderingOptions(), outputPath));
40}
Давайте внимательнее посмотрим на этот фрагмент кода C#:
- В примере мы создаем HTML-шаблон с нуля, т. е. из строки кода. Итак, сначала подготавливаем HTML-код.
- Мы используем
ConvertTemplate(
content
,baseUrl
,data
,options
) для преобразования шаблона. Этот метод принимает четыре параметра и преобразует строку содержимого HTML в полностью сформированный объектhtmlDocument
:content
(htmlCode) – строка с HTML-кодом для использования в качестве шаблона;baseUrl
(string.Empty) – в данном примере пустая строка, так как этот параметр не используется;data
(TemplateData) – источник данных для заполнения шаблона. В данном случае это строка XML, хранящаяся в переменнойdataSource
;options
(TemplateLoadOptions) – загрузить опции для шаблона. Вы можете создать его с помощью конструктора TemplateLoadOptions().
- После создания HTML-документа мы обращаемся к элементу
<input>
внутри документа и проверяем, что он имеет правильные атрибуты, такие какchecked
в этом случае:- Мы используем метод
GetElementsByTagName() для получения первого элемента
<input>
. - Затем мы выполняем несколько утверждений для проверки свойств элемента
<input>
. Первое утверждение Assert.True(input.Checked) проверяет, установлен ли флажок. Следующие два утверждения,Assert.Equal(3, input.Attributes.Length)
иAssert.Equal("type", input.Attributes[0].Name)
, проверяют количество атрибутов и имя первый атрибут входного элемента соответственно и так далее.
- Мы используем метод
GetElementsByTagName() для получения первого элемента
- Чтобы преобразовать документ HTML в файл изображения, мы используем метод RenderTo().
- Наконец, мы вызываем метод Save(path). HTML-документ сохраняется в файле out-checked.html. Содержимое этого файла можно увидеть ниже:
1<html>
2 <head>
3 </head>
4 <body>
5 <input type="checkbox" disabled="" checked="">
6 </body>
7</html>
Вы можете скачать полные примеры и файлы данных с GitHub.
Пустой флажок – Empty Checkbox
Если вы хотите создать документ на основе этого шаблона с пустым элементом флажка, используйте следующий источник данных:
1<Data><attr></attr></Data>
Как видите, для получения такого результата достаточно просто передать пустое значение. Полный пример преобразования выглядит так:
1// Create a template with a string of HTML code
2var htmlCode = "<input type=\"checkbox\" disabled {{attr}} />";
3
4// Create an empty data source that won't set an attribute
5var dataSource = "<Data><attr></attr></Data>";
6
7// Convert template to HTML
8using (var htmlDocument = Converter.ConvertTemplate(htmlCode, string.Empty,
9 new TemplateData(new TemplateContentOptions(dataSource, TemplateContent.XML)),
10 new TemplateLoadOptions()))
11{
12 // Request the input checkbox element that we specified in the template
13 var input = (HTMLInputElement)htmlDocument.GetElementsByTagName("input").First();
14
15 // Сheck if the checkbox is checked - it should not be there
16 Console.WriteLine("Checked: " + input.Checked);
17 Console.WriteLine("Attributes.Length: " + input.Attributes.Length);
18 Console.WriteLine("Attributes[0].Name: " + input.Attributes[0].Name);
19 Console.WriteLine("Attributes[1].Name: " + input.Attributes[1].Name);
20
21 /*
22 This example produces the following results:
23
24 Checked: False
25 Attributes.Length: 2
26 Attributes[0].Name: type
27 Attributes[1].Name: disabled
28 */
29
30 // Save the HTML document to a file
31 htmlDocument.Save(Path.Combine(OutputDir, "out-unchecked.html"));
32
33 // Prepare a path to the output file
34 string outputPath = Path.Combine(OutputDir, "out-unchecked.png");
35
36 // Convert HTML to PNG
37 htmlDocument.RenderTo(new ImageDevice(new ImageRenderingOptions(), outputPath));
38}
Aspose.HTML предлагает бесплатные онлайн Конвертеры для преобразования HTML, XHTML, MHTML, EPUB, XML и Markdown. файлы в различные популярные форматы. Вы можете легко конвертировать HTML в PDF, HTML в изображение, EPUB to PDF, SVG в PDF, MHTML в PDF, или MD в HTML. Просто выберите файл, выберите формат для преобразования, и все готово! Попробуйте наши мощные Конвертеры бесплатно прямо сейчас!