Загрузка HTML с Aspose.HTML for .NET

Aspose.HTML for .NET загружает HTML в объект HTMLDocument – хранящееся в памяти дерево документа для DOM-запросов, изменения содержимого, извлечения данных, сохранения и преобразования. Доступные конструкторы HTMLDocument принимают локальный путь, удалённый URL, строку с разметкой или поток, поэтому приложение может использовать источник, соответствующий его сценарию.


Загрузка HTML-файла в C#

Передайте локальный путь к файлу в конструктор HTMLDocument. После загрузки через документ становится доступна разобранная DOM-модель. Следующий пример открывает input.html и считывает полную разметку корневого элемента документа через свойство OuterHTML .

Код C# для загрузки HTML-документа из файла

using System;
using Aspose.Html;

using HTMLDocument document = new HTMLDocument("input.html");

string html = document.DocumentElement.OuterHTML;
Console.WriteLine(html);

Выбор источника HTML и конструктора

  • Локальный файл. Передайте путь к файлу, если HTML уже находится на диске, а относительные ресурсы должны разрешаться относительно расположения документа.
  • Удалённый URL. Передайте HTTP- или HTTPS-адрес, если приложению нужно загрузить веб-страницу и доступные внешние ресурсы.
  • Строка с разметкой. Передайте HTML-код вместе с базовым URL, если разметка уже находится в памяти.
  • Поток. Передайте доступный для чтения поток и базовый URL, если HTML поступает из загруженного файла, тела ответа, базы данных или другого источника в памяти.

Загрузка HTML по URL в C#

Конструктор с одним адресом позволяет открыть удалённую веб-страницу. При загрузке по URL также обрабатываются внешние ресурсы, которые доступны и разрешены конфигурацией среды. После загрузки используйте свойства и методы DOM для просмотра или изменения документа.

Код C# для загрузки HTML-документа по URL

using System;
using Aspose.Html;

using HTMLDocument document =
    new HTMLDocument("https://docs.aspose.com/html/net/creating-a-document/");

string html = document.DocumentElement.OuterHTML;
Console.WriteLine(html);

Загрузка HTML из строки в C#

Используйте конструктор с двумя аргументами, если приложение уже содержит HTML-разметку в строке. Второй аргумент задаёт базовый URL для разрешения относительных изображений, таблиц стилей, скриптов, шрифтов и ссылок. В этом автономном примере значение "." указывает на текущий каталог; если разметка содержит относительные ссылки, передайте фактический каталог или веб-адрес.

Код C# для создания HTML-документа из строки

using System;
using Aspose.Html;

string markup = "<p>HTML loaded from a string</p>";

// Use the current directory as the base URL
string baseUrl = ".";

using HTMLDocument document = new HTMLDocument(markup, baseUrl);

string html = document.DocumentElement.OuterHTML;
Console.WriteLine(html);

Загрузка HTML из потока в C#

Конструктор читает данные с текущей позиции потока. Если приложение только что записало HTML, очистите буфер объекта записи и верните позицию в начало перед созданием документа. Не закрывайте поток, пока HTMLDocument не завершит чтение. В примере значение "." задаёт текущий каталог как базовый путь, поскольку разметка не содержит относительных ресурсов.

Код C# для загрузки HTML-документа из потока

using System;
using System.IO;
using System.Text;
using Aspose.Html;

using MemoryStream stream = new MemoryStream();

// Keep the stream open after disposing the writer
using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8, 1024, true))
{
    writer.Write("<p>HTML loaded from a stream</p>");
    writer.Flush();
}

// Reset the stream before HTMLDocument reads it
stream.Position = 0;

using HTMLDocument document =
    new HTMLDocument(stream, ".");

string html = document.DocumentElement.OuterHTML;
Console.WriteLine(html);

Особенности загрузки HTML

  • Конструкторы разбирают HTML в DOM. Полученное дерево соответствует правилам синтаксического анализа HTML. При последующей сериализации структура или разметка могут быть нормализованы, поэтому не следует ожидать побайтового совпадения с исходным кодом.
  • Базовый URL управляет относительными ресурсами. У строки и потока нет собственного расположения документа. Укажите адрес, относительно которого должны разрешаться CSS, изображения, скрипты, шрифты и ссылки.
  • Конструкторы документа работают синхронно. Они ожидают загрузки документа и разрешённых внешних ресурсов. Если приложению нужна асинхронная навигация, используйте Navigate() и события документа.
  • Удалённая загрузка зависит от среды. Некорректные адреса, перенаправления, требования аутентификации, сетевые сбои и ограничения безопасности могут помешать загрузке страницы или связанного ресурса.
  • Освобождайте загруженные документы. HTMLDocument хранит состояние документа и ресурсов. Объявление using или блок using освобождает их после завершения обработки.

Документация и справочник API по загрузке HTML

В руководстве Создание и загрузка HTML-документов приведены примеры конструкторов, правила выбора базового URL, асинхронная навигация и распространённые проблемы загрузки. После загрузки документа используйте руководство HTML DOM для навигации по узлам или статью Редактирование HTML-документа для изменения содержимого и атрибутов. Если исходного документа ещё нет, перейдите к сценарию Создание HTML в C# .


Установка Aspose.HTML for .NET

Установите Aspose.HTML for .NET из NuGet с помощью .NET CLI:

dotnet add package Aspose.HTML

Также можно использовать интерфейс диспетчера пакетов NuGet или выполнить Install-Package Aspose.HTML в консоли диспетчера пакетов. Подробные инструкции приведены в руководстве по установке . Чтобы протестировать API без ограничений ознакомительной версии, запросите временную лицензию .


Вопросы о загрузке HTML

1. Как загрузить HTML-документ в C#?

Передайте локальный путь или URL в конструктор HTMLDocument. Для разметки в строке или потоке передайте содержимое вместе с базовым URL. Конструктор разберёт источник и предоставит полученную DOM-модель HTML.

2. Сохраняется ли исходная разметка HTML без изменений?

Не следует рассчитывать на побайтовое совпадение. Aspose.HTML разбирает исходный код в DOM, а последующая сериализация может нормализовать неявные элементы, кодировку символов, пробелы или структуру разметки, сохраняя модель документа.

3. Может ли Aspose.HTML загружать веб-страницу асинхронно?

Да. Конструкторы выполняют загрузку синхронно. В разделе Асинхронная загрузка HTML показано, как создать документ, подписаться на OnReadyStateChange или OnLoad, вызвать Navigate() и задать ограниченное время ожидания.

4. Почему удалённый HTML-документ может не загрузиться?

Причинами могут быть некорректный или недоступный URL, перенаправления, требования аутентификации, сетевые ограничения, заблокированные внешние ресурсы или параметры безопасности среды. Проверьте адрес и разрешите только тот сетевой доступ, который действительно нужен приложению.

5. Как ограничить внешние ресурсы при загрузке HTML?

Создайте документ с объектом Configuration, в котором заданы необходимые параметры безопасности и загрузки ресурсов. Ограничьте удалённый доступ доверенными расположениями, особенно если HTML или URL получены от пользователя.

Связанные операции с HTML-документами

Перейдите к созданию, редактированию, выбору элементов или структурированным запросам.