Framesets

Framesets

本指南展示了如何在 Aspose.Words FOSS 中为 .NET 读取传统的 frames-page 结构,使用 Frameset 和 FramesetCollection 类,这两个类分别表示框架页面及其子框架,当文档结构模拟一组框架时。


Frameset 类

Frameset 表示一个 frames 页面或该页面上的单个框架。Document.Frameset 返回从 framed HTML 结构加载的文档的根 Frameset。FrameDefaultUrl(string)是该框架中显示的网页 URL 或文档文件名。IsFrameLinkToFile(bool)指示 FrameDefaultUrl 值是否为框架链接的外部资源。ChildFramesets 返回一个 FramesetCollection,其中包含嵌套在此框架下的子框架和 frames 页面。


使用 FramesetCollection 迭代子框架

FramesetCollection 实现了 IEnumerable<Frameset>,因此 GetEnumerator() 支持对其包含的框架进行 foreach 迭代。Count 报告集合中框架或 frames 页面的数量。将 Count 与使用 ChildFramesets 的迭代相结合,可递归遍历嵌套的 frames 页面结构——每个子 Frameset 本身可以再包含进一步的 ChildFramesets。


提示与最佳实践

  • 在读取其属性之前检查 Document.Frameset 是否包含 null — 大多数文档不是框架页面,因此仅当源 HTML 使用框架布局时,此属性才会被填充。
  • 递归遍历 ChildFramesets(而不是假设它是平坦的单层结构),因为框架页面可以在其框架内部嵌套更多的框架页面。
  • 使用 IsFrameLinkToFile 来区分链接到外部资源的框架和直接在 FrameDefaultUrl 中嵌入文档文件名的框架。
  • FramesetCollection.Count 是一种简便的方法,用于在遍历之前检查 Frameset 是否有子项。

常见问题

问题原因修复
Document.Frameset 是 null文档未从基于 frames 的 HTML 源加载在依赖此属性之前,请确认源文档实际使用了 HTML frames
遍历 ChildFramesets 会忽略嵌套 frames仅遍历了顶层递归进入每个子 Frameset.ChildFramesets,而不是仅迭代一层深度
无法判断帧是指向文件还是 URLIsFrameLinkToFile 未被检查读取 IsFrameLinkToFile 与 FrameDefaultUrl 以了解如何解析目标

FAQ

在 Aspose.Words FOSS 中,.NET 的 Frameset 是什么?

它表示一个框架页面或框架页面上的单个框架,以 Document.Frameset 形式公开,用于从基于框架的 HTML 源加载的文档。

我如何列出 frameset 中的所有帧?

遍历 Frameset.ChildFramesets(一个 FramesetCollection),使用 GetEnumerator() / foreach,并递归进入任何自身还有进一步 ChildFramesets 的子项。

我如何知道一个 Frameset 有多少子帧?

读取 FramesetCollection.Count 的 ChildFramesets 属性。

IsFrameLinkToFile 告诉了你什么?

判断 FrameDefaultUrl 中的网页或文档文件名是否为帧链接的外部资源。


API Reference 摘要

类/方法描述
Document.Frameset根 Frameset 用于从基于 frames 的 HTML 源加载的文档
Frameset表示一个 frames 页面或 frames 页面上的单个框架
Frameset.FrameDefaultUrl在框架中显示的网页 URL 或文档文件名
Frameset.IsFrameLinkToFile是否 FrameDefaultUrl 为外部链接资源
Frameset.ChildFramesets子框架和框架页面的 FramesetCollection
FramesetCollectionFrameset 实例的集合;Count,GetEnumerator

另请参阅

 中文