使用 Aspose.HTML for .NET 加载 HTML
Aspose.HTML for .NET 将 HTML 加载到 HTMLDocument 中。它是内存中的文档树,可用于 DOM 查询、内容修改、数据提取、保存和转换。 HTMLDocument 构造函数 可接受本地路径、远程 URL、标记字符串或流,因此应用程序可以选择符合工作流程的数据源。
在 C# 中加载 HTML 文件
将本地文件路径传给 HTMLDocument 构造函数。加载完成后,文档会公开解析后的 DOM。以下示例打开 input.html,并通过
OuterHTML
读取文档元素的完整标记。
从文件加载 HTML 文档的 C# 代码
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 一起传入。
- 流。 当 HTML 来自上传内容、响应正文、数据库或其他内存数据源时,请传入可读流和基准 URL。
在 C# 中从 URL 加载 HTML
接受单个地址的构造函数可以打开远程网页。通过 URL 加载时,还会处理环境配置允许且可以访问的外部资源。加载后,可使用 DOM 属性和方法检查或修改文档。
从 URL 加载 HTML 文档的 C# 代码
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);
在 C# 中从字符串加载 HTML
当应用程序已有字符串形式的 HTML 标记时,请使用双参数构造函数。第二个参数是基准 URL,用于解析相对图片、样式表、脚本、字体和链接。此独立示例使用 "." 表示当前目录。如果标记包含相对引用,请提供实际目录或网址。
从字符串创建 HTML 文档的 C# 代码
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);
在 C# 中从流加载 HTML
流构造函数从流的当前位置开始读取。如果应用程序刚写入 HTML,请在创建文档前刷新 writer 并将位置重置到开头。在 HTMLDocument 完成读取前,应保持流处于打开状态。由于示例标记不含相对资源,因此使用 "." 作为表示当前目录的中性基准 URL。
从流加载 HTML 文档的 C# 代码
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 块,可在处理完成后释放这些状态。
HTML 加载文档和 API 参考
阅读 创建或加载 HTML 文档 ,了解构造函数示例、基准 URL 指南、异步导航和常见加载问题。加载文档后,可使用 HTML DOM 指南导航节点,或通过 编辑 HTML 文档 指南修改内容和属性。要创建没有现有数据源的新文档,请参阅 在 C# 中创建 HTML 。
安装 Aspose.HTML for .NET
使用 .NET CLI 从 NuGet 安装 Aspose.HTML for .NET :
dotnet add package Aspose.HTML
您也可以使用 NuGet 包管理器界面,或在包管理器控制台中运行 Install-Package Aspose.HTML。有关配置详情,请参阅
安装指南
;如需不受评估版限制地测试 API,请申请
临时许可证
。
HTML 加载常见问题
1. 如何在 C# 中加载 HTML 文档?
将本地路径或 URL 传给 HTMLDocument 构造函数。对于字符串或流中的标记,请同时传入内容和基准 URL。构造函数会解析数据源并公开生成的 HTML DOM。
2. 加载 HTML 会完整保留源标记吗?
不要依赖逐字节一致性。Aspose.HTML 会将源内容解析为 DOM,以后序列化时可能规范化隐式元素、字符编码、空白或标记结构,同时保留文档模型。
3. Aspose.HTML 能否异步加载网页?
可以。构造函数执行同步加载。请按照
异步加载 HTML
的说明创建文档、订阅 OnReadyStateChange 或 OnLoad 等加载事件、调用 Navigate(),并使用应用程序定义的超时等待。
4. 为什么远程 HTML 文档可能加载失败?
常见原因包括 URL 无效或无法访问、重定向、身份验证要求、网络限制、外部资源被阻止或环境安全设置。请验证地址,并且只配置应用程序所需的网络访问权限。
5. 应用程序如何在加载 HTML 时限制外部资源?
使用应用了所需安全和资源加载设置的 Configuration 创建文档。尤其当 HTML 或 URL 来自不可信用户时,应将远程访问限制到可信位置。