Загрузка 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-документами
Перейдите к созданию, редактированию, выбору элементов или структурированным запросам.