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,而不是仅迭代一层深度 |
| 无法判断帧是指向文件还是 URL | IsFrameLinkToFile 未被检查 | 读取 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 |
FramesetCollection | Frameset 实例的集合;Count,GetEnumerator |