Framesets
Framesets
Это руководство показывает, как читать устаревшую структуру страниц с фреймами в Aspose.Words FOSS для .NET, используя классы Frameset и FramesetCollection, которые представляют страницу с фреймами и её дочерние фреймы, когда структура документа моделирует набор фреймов.
Класс Frameset
Frameset представляет страницу с фреймами или отдельный фрейм на странице с фреймами. Document.Frameset возвращает корневой Frameset для документа, загруженного из фреймовой структуры HTML. FrameDefaultUrl (string) — это URL веб-страницы или имя файла документа, отображаемое в этом фрейме. IsFrameLinkToFile (bool) указывает, является ли значение FrameDefaultUrl внешним ресурсом, на который ссылается фрейм. ChildFramesets возвращает FramesetCollection дочерних фреймов и страниц с фреймами, вложенных в этот.
Итерация дочерних фреймов с помощью FramesetCollection
FramesetCollection реализует IEnumerable<Frameset>, поэтому GetEnumerator() поддерживает foreach итерацию по фреймам, которые он содержит. Count сообщает количество фреймов или страниц с фреймами в коллекции. Сочетайте Count и итерацию с ChildFramesets, чтобы рекурсивно обходить вложенную структуру страниц с фреймами — каждый дочерний Frameset может сам содержать дальнейшие ChildFramesets.
Советы и лучшие практики
- Проверьте
Document.Framesetна наличиеnullперед чтением его свойств — большинство документов не являются страницами с фреймами, поэтому это свойство заполняется только когда исходный HTML использовал макет с фреймами. - Обойдите
ChildFramesetsрекурсивно (а не предполагая плоскую одноуровневую структуру), поскольку страница с фреймами может вложить в свои фреймы другие страницы с фреймами. - Используйте
IsFrameLinkToFile, чтобы различать фрейм, ссылающийся на внешний ресурс, и фрейм, в котором имя файла документа встраивается напрямую вFrameDefaultUrl. FramesetCollection.Count— простой способ проверить, есть ли уFramesetдочерние элементы, перед итерацией.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
Document.Frameset является null | Документ не был загружен из HTML источника, основанного на фреймах | Убедитесь, что исходный документ действительно использовал HTML фреймы, прежде чем полагаться на это свойство |
Итерация ChildFramesets пропускает вложенные фреймы | Итерация была выполнена только на верхнем уровне | Рекурсивно обрабатывать каждый дочерний Frameset.ChildFramesets, вместо итерации только на один уровень глубже |
| Не удаётся определить, указывает ли кадр на файл или URL | IsFrameLinkToFile не был проверен | Прочитайте IsFrameLinkToFile вместе с FrameDefaultUrl, чтобы знать, как разрешить цель |
FAQ
Что такое Frameset в Aspose.Words FOSS для .NET?
Это представляет страницу с фреймами или отдельный фрейм на странице с фреймами, представленный как Document.Frameset для документов, загруженных из источника HTML с использованием фреймов.
Как перечислить все фреймы во фреймсете?
Итерировать Frameset.ChildFramesets (a FramesetCollection) с помощью GetEnumerator() / foreach, рекурсивно проходя в любой дочерний элемент, который сам имеет дальнейшие ChildFramesets.
Как узнать, сколько дочерних фреймов у Frameset?
Прочитайте FramesetCollection.Count в его свойстве ChildFramesets.
Что IsFrameLinkToFile вам говорит?
Определяет, является ли веб-страница или имя файла документа в FrameDefaultUrl внешним ресурсом, на который ссылается фрейм.
API Reference Сводка
| Класс/Метод | Описание: |
|---|---|
Document.Frameset | Корневой Frameset для документа, загруженного из фрейм-базированного источника HTML |
Frameset | Представляет страницу с фреймами или отдельный фрейм на странице с фреймами |
Frameset.FrameDefaultUrl | URL веб-страницы или имя файла документа, отображаемого во фрейме |
Frameset.IsFrameLinkToFile | Является ли FrameDefaultUrl внешним связанным ресурсом |
Frameset.ChildFramesets | FramesetCollection дочерних фреймов и страниц фреймов |
FramesetCollection | Коллекция экземпляров Frameset; Count, GetEnumerator |