Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.HTML for .NET позволяет создавать HTML-документы с нуля, загружать существующий HTML из файла или URL, строить документ из строки или потока в памяти и работать с DOM перед сохранением или конвертацией результата. Центральный API – класс HTMLDocument, который представляет дерево HTML-документа в памяти.
Используйте конструкторы HTMLDocument, чтобы создать или загрузить HTML в C#. Можно начать с пустого документа, открыть HTML-файл или URL, передать HTML-разметку как строку или поток, отредактировать DOM, а затем сохранить или конвертировать документ.
Реализация HTMLDocument основана на спецификациях W3C DOM и WHATWG DOM, поэтому объектная модель использует знакомые браузерные понятия: документ, элементы, текстовые узлы, атрибуты и дочерние узлы. После загрузки документа можно читать HTML, добавлять или удалять узлы, обновлять атрибуты, менять текст, применять стили или передавать документ в сценарий конвертации.
Используйте эту статью, когда нужно выбрать подходящий конструктор или шаблон загрузки для C#-приложения.
| Источник или задача | Рекомендуемый API |
|---|---|
| Создать пустой HTML-документ | new HTMLDocument() |
| Построить HTML методами DOM | HTMLDocument, CreateTextNode(), AppendChild() |
| Загрузить HTML-файл | new HTMLDocument(filePath) |
| Загрузить HTML с URL | new HTMLDocument(url) |
| Создать HTML из строки | new HTMLDocument(html, baseUrl) |
| Создать HTML из потока | new HTMLDocument(stream, baseUrl) |
| Создать SVG-документ из разметки | new SVGDocument(svg, baseUrl) |
| Загрузить документ без блокировки основного потока | HTMLDocument.Navigate() с событиями OnReadyStateChange или OnLoad |
Класс HTMLDocument – отправная точка для большинства сценариев Aspose.HTML for .NET. С его помощью можно создать новый документ, загрузить существующий HTML, изучить DOM, изменить узлы документа и сохранить результат как HTML или конвертировать его в другой формат.
Используйте конструктор HTMLDocument() по умолчанию, когда нужен пустой документ, который будет заполнен позже.
HTMLDocument с конструктором по умолчанию.Следующий пример создает пустой HTML-документ и сохраняет его в файл:
1// Create an empty HTML document using C#
2
3// Prepare an output path for a document saving
4string documentPath = Path.Combine(OutputDir, "create-empty-document.html");
5
6// Initialize an empty HTML Document
7using (HTMLDocument document = new HTMLDocument())
8{
9 // Work with the document
10
11 // Save the document to a file
12 document.Save(documentPath);
13}После сохранения выходной файл содержит начальную HTML-структуру, включая элементы <html>, <head> и <body>. Дополнительные параметры сохранения см. в статье
Сохранить HTML-документ в C#.
Используйте методы DOM, когда HTML-структуру нужно сгенерировать программно.
HTMLDocument.Следующий пример создает текстовый узел, добавляет его в тело документа и сохраняет новый HTML-файл:
1// Create an HTML document using C#
2
3// Prepare an output path for a document saving
4string documentPath = Path.Combine(OutputDir, "create-new-document.html");
5
6// Initialize an empty HTML Document
7using (HTMLDocument document = new HTMLDocument())
8{
9 // Create a text node and add it to the document
10 Text text = document.CreateTextNode("Hello, World!");
11 document.Body.AppendChild(text);
12
13 // Save the document to a disk
14 document.Save(documentPath);
15}Другие шаблоны редактирования DOM см. в статье Редактировать HTML-документ в C#.
Используйте конструктор HTMLDocument(string), когда исходный HTML уже существует на диске.
HTMLDocument из этого пути к файлу.Следующий пример загружает HTML-файл и выводит разметку корневого элемента:
1// Load HTML from a file using C#
2
3string htmlFile = Path.Combine(OutputDir, "load-from-file.html");
4
5// Prepare a load-from-file.html document
6File.WriteAllText(htmlFile, "Hello, World!");
7
8// Load from the load-from-file.html
9using (HTMLDocument document = new HTMLDocument(htmlFile))
10{
11 // Write the document content to the output stream
12 Console.WriteLine(document.DocumentElement.OuterHTML);
13}Если нужно загрузить существующий HTML-файл, поработать с ним и сохранить новую копию, используйте тот же конструктор и вызовите Save() после применения изменений.
1// Load an HTML documment from a file using C#
2
3// Prepare a file path
4string documentPath = Path.Combine(DataDir, "sprite.html");
5
6// Initialize an HTML document from the file
7using (HTMLDocument document = new HTMLDocument(documentPath))
8{
9 // Work with the document
10
11 // Save the document to a disk
12 document.Save(Path.Combine(OutputDir, "sprite_out.html"));
13}Используйте загрузку по URL, когда приложению нужно напрямую открыть удаленную HTML-страницу.
HTMLDocument.Следующий пример загружает HTML-документ с URL и выводит полученную разметку в консоль:
Если URL недоступен, Aspose.HTML выбрасывает
DOMException с кодом NetworkError.
1// Load HTML from a URL using C#
2
3// Load a document from 'https://docs.aspose.com/html/files/document.html' web page
4using (HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/files/document.html"))
5{
6 string html = document.DocumentElement.OuterHTML;
7
8 // Write the document content to the output stream
9 Console.WriteLine(html);
10}Если HTML-разметка уже доступна в памяти как System.String или System.IO.Stream, не нужно создавать временный исходный файл. Передайте разметку или поток в специализированный конструктор HTMLDocument вместе с базовым URL.
Передавайте корректный baseUrl, если HTML-разметка содержит относительные ссылки на изображения, таблицы стилей, скрипты, шрифты или другие ресурсы. Aspose.HTML использует базовый URL, чтобы разрешать эти ресурсы при загрузке документа.
Используйте конструктор HTMLDocument(string, string), когда HTML-разметка хранится в C#-строке.
HTMLDocument.Следующий пример создает HTML-документ из строки и сохраняет его как HTML-файл:
1// Create HTML from a string using C#
2
3// Prepare HTML code
4string html_code = "<p>Hello, World!</p>";
5
6// Initialize a document from the string variable
7using (HTMLDocument document = new HTMLDocument(html_code, "."))
8{
9 // Save the document to a disk
10 document.Save(Path.Combine(OutputDir, "create-from-string.html"));
11}Используйте конструктор HTMLDocument(stream, string), когда разметка приходит из памяти, тела ответа, хранилища или другого источника на базе потока.
HTMLDocument.Следующий пример создает документ из потока памяти:
1// Load HTML from a stream using C#
2
3// Create a memory stream object
4using (MemoryStream mem = new MemoryStream())
5using (StreamWriter sw = new StreamWriter(mem))
6{
7 // Write the HTML code into memory object
8 sw.Write("<p>Hello, World! I love HTML!</p>");
9
10 // It is important to set the position to the beginning, since HTMLDocument starts the reading exactly from the current position within the stream
11 sw.Flush();
12 mem.Seek(0, SeekOrigin.Begin);
13
14 // Initialize a document from the string variable
15 using (HTMLDocument document = new HTMLDocument(mem, "."))
16 {
17 // Save the document to disk
18 document.Save(Path.Combine(OutputDir, "load-from-stream.html"));
19 }
20}Aspose.HTML for .NET также работает с SVG-документами через SVGDocument. SVG- и HTML-документы имеют одну DOM-основу, поэтому многие принципы загрузки, чтения, редактирования и сохранения похожи.
Используйте SVGDocument(string, string), когда SVG-разметка уже доступна в памяти.
SVGDocument.Следующий пример создает SVG-документ с кругом и выводит его разметку в консоль:
1// Load SVG from a string using C#
2
3// Initialize an SVG document from a string object
4using (SVGDocument document = new SVGDocument("<svg xmlns='http://www.w3.org/2000/svg'><circle cx='50' cy='50' r='40'/></svg>", "."))
5{
6 // Write the document content to the output stream
7 Console.WriteLine(document.DocumentElement.OuterHTML);
8}Больше SVG-сценариев см. в статье Как работать с Aspose.SVG API.
MHTML – формат веб-архива, который может содержать HTML и связанные ресурсы, например CSS, JavaScript, изображения и аудиофайлы. EPUB – формат электронных публикаций, используемый многими eReader-устройствами и приложениями для чтения.
Aspose.HTML for .NET поддерживает MHTML и EPUB в первую очередь для сценариев рендеринга и конвертации. В этой статье эти форматы не рассматриваются как редактируемые источники HTMLDocument. Чтобы конвертировать MHTML или EPUB в PDF, XPS, изображения и другие поддерживаемые выходные форматы, см.
Преобразование между форматами в C#.
Загрузка документа может занять время, потому что библиотеке нужно загрузить HTML-источник, связанные ресурсы и скрипты. Для отзывчивых приложений можно начать загрузку через Navigate() и обработать завершение через события документа.
Используйте OnReadyStateChange, когда нужно проверить, что документ достиг состояния complete.
HTMLDocument.OnReadyStateChange.Navigate() с целевым URL.complete.Следующий пример асинхронно загружает удаленный документ и ожидает состояния завершения:
1// Load HTML asynchronously using C#
2
3// Initialize an AutoResetEvent
4AutoResetEvent resetEvent = new AutoResetEvent(false);
5
6// Create an instance of an HTML document
7HTMLDocument document = new HTMLDocument();
8
9// Create a string variable for the OuterHTML property reading
10string outerHTML = string.Empty;
11
12// Subscribe to ReadyStateChange event
13// This event will be fired during the document loading process
14document.OnReadyStateChange += (sender, @event) =>
15{
16 // Check the value of the ReadyState property
17 // This property is representing the status of the document. For detail information please visit https://www.w3schools.com/jsref/prop_doc_readystate.asp
18 if (document.ReadyState == "complete")
19 {
20 // Fill the outerHTML variable by value of loaded document
21 outerHTML = document.DocumentElement.OuterHTML;
22 resetEvent.Set();
23 }
24};
25
26// Navigate asynchronously at the specified Uri
27document.Navigate("https://docs.aspose.com/html/files/document.html");
28
29// Here the outerHTML is empty yet
30
31Console.WriteLine($"outerHTML = {outerHTML}");
32
33// Wait 5 seconds for the file to load
34
35// Here the outerHTML is filled
36Console.WriteLine("outerHTML = {0}", outerHTML);Событие OnLoad – еще один способ отреагировать на завершение асинхронной загрузки документа.
HTMLDocument.OnLoad.Navigate() с целевым URL.Следующий пример использует событие OnLoad для асинхронной загрузки документа:
1// Handle an HTML document load using C#
2
3// Initialize an AutoResetEvent
4AutoResetEvent resetEvent = new AutoResetEvent(false);
5
6// Initialize an HTML document
7HTMLDocument document = new HTMLDocument();
8bool isLoading = false;
9
10// Subscribe to the OnLoad event
11// This event will be fired once the document is fully loaded
12document.OnLoad += (sender, @event) =>
13{
14 isLoading = true;
15 resetEvent.Set();
16};
17
18// Navigate asynchronously at the specified Uri
19document.Navigate("https://docs.aspose.com/html/files/document.html");
20
21Console.WriteLine("outerHTML = {0}", document.DocumentElement.OuterHTML);| Проблема | Причина | Решение |
|---|---|---|
| Относительные изображения, стили или шрифты не загружаются | Документ создан из строки или потока без корректного базового URL. | Передайте базовый URL, который указывает на папку или адрес, где должны разрешаться относительные ресурсы. |
| Документ из потока пустой | После записи разметки позиция потока осталась в конце. | Сбросьте позицию потока перед передачей в конструктор HTMLDocument. |
Загрузка по URL завершается ошибкой NetworkError | Удаленный ресурс недоступен или URL не открывается. | Проверьте URL, сетевой доступ, редиректы и конфигурацию среды перед загрузкой документа. |
| Сохраненный HTML содержит только начальную структуру | Пустой HTMLDocument был сохранен до добавления содержимого. | Добавьте DOM-узлы или загрузите исходный HTML перед вызовом Save(). |
| Асинхронный код читает неполную разметку | Документ проверяется до завершения загрузки. | Дождитесь OnReadyStateChange со значением complete или обработайте событие OnLoad перед чтением DOM. |
| MHTML или EPUB нельзя редактировать как HTML | Эти форматы поддерживаются для сценариев рендеринга, а не как обычные редактируемые источники HTMLDocument. | Используйте API конвертации для MHTML и EPUB или сначала переведите контент в редактируемый HTML-сценарий. |
Создайте HTMLDocument конструктором по умолчанию, добавьте DOM-узлы при необходимости и сохраните документ с помощью Save().
Передайте путь к файлу в конструктор HTMLDocument. После загрузки можно читать DOM, обновлять содержимое, сохранять документ или конвертировать его.
Используйте конструктор HTMLDocument(string, string). Первый аргумент – HTML-разметка, второй – базовый URL для разрешения относительных ресурсов.
Базовый URL используется для разрешения относительных путей к ресурсам в HTML-строках и потоках. Без него связанные изображения, CSS, скрипты или шрифты могут загрузиться некорректно.
Да. Передайте URL в конструктор HTMLDocument. Если URL недоступен, библиотека сообщит об ошибке сетевой загрузки.
Да. Используйте SVGDocument для SVG-содержимого. SVG-документы используют DOM-модель, похожую на HTML, и их можно читать, редактировать, сохранять или конвертировать.
Нет. MHTML и EPUB поддерживаются для сценариев рендеринга и конвертации. Используйте API конвертации, когда нужно отрендерить эти форматы в PDF, XPS, изображения или другие выходные форматы.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.