Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
The Aspose.Words Document Object Model ()DOM) является представлением в памяти документа Word. The Aspose.Words DOM Это позволяет программно читать, манипулировать и изменять содержание и форматирование документа Word.
В этом разделе описаны основные классы Aspose.Words DOM и их взаимоотношениях. Используя Aspose.Words DOM классы, можно получить программный доступ к элементам документа и форматированию.
Document Объектное деревоКогда документ прочитывается в Aspose.Words DOM Затем строится объектное дерево и различные типы элементов исходного документа имеют свои собственные. DOM древесные объекты с различными свойствами.
Когда Aspose.Words Считывает документ Word в память, создает объекты разного типа, представляющие различные элементы документа. Каждый запуск текста, абзаца, таблицы или раздела является узлом, и даже сам документ является узлом. Aspose.Words Определяет класс для каждого типа узла документа.
Дерево документов в Aspose.Words Далее следует шаблон композитного дизайна:
На приведенной ниже диаграмме показано наследование между классами узлов Aspose.Words Document Object Model ()DOM). Названия абстрактных классов написаны курсивом.
Node класс.
Давайте посмотрим на пример. Следующее изображение показывает Microsoft Word Документы с различными типами контента.
При чтении вышеуказанного документа в Aspose.Words DOM, Дерево объектов создается, как показано в схеме ниже.
Document, Section, Paragraph, Table, Shape, Run, и все остальные эллипсы на диаграмме являются Aspose.Words объекты, представляющие элементы документа Word.
Node ТипХотя и Node класса достаточно, чтобы отличать разные узлы друг от друга; Aspose.Words обеспечивает NodeType Перечисление для упрощения некоторых API задачи, такие как выбор узлов определенного типа.
Тип каждого узла может быть получен с помощью NodeType собственность. Это свойство возвращает NodeType перечислительная стоимость. Например, узел абзаца, представленный Paragraph Класс возвращается NodeType.Paragraphи столовый узел, представленный Table Класс возвращается NodeType.Table.
Следующий пример показывает, как получить тип узла с помощью NodeType перечисление:
Aspose.Words представляет собой документ в виде дерева узлов, что позволяет перемещаться между узлами. В этом разделе описывается, как исследовать и перемещаться по дереву документов. Aspose.Words.
Когда вы открываете образец документа, представленный ранее, в проводнике документа, дерево узла появляется точно так же, как оно представлено в документе. Aspose.Words.
Узлы в дереве имеют отношения между собой:
Узлы, которые могут содержать другие узлы, происходят из CompositeNode класс, и все узлы в конечном счете происходят от Node класс. Эти два базовых класса обеспечивают общие методы и свойства для навигации и модификации структуры дерева.
Следующая диаграмма объектов UML показывает несколько узлов образца документа и их отношения друг к другу через родительские, детские и родственные свойства:
Узел всегда принадлежит определенному документу, даже если он был только что создан или удален из дерева, потому что в нем хранятся жизненно важные структуры, такие как стили и списки. Document Узел. Например, невозможно иметь Paragraph без Document Каждый пункт имеет определенный стиль, который определяется во всем мире для документа. Это правило используется при создании любых новых узлов. Добавить новый Paragraph непосредственно в сторону DOM Требуется документ, переданный конструктору.
При создании нового абзаца с использованием DocumentBuilder, Строитель всегда имеет Document Класс, связанный с ним через DocumentBuilder.Document собственность.
Следующий пример кода показывает, что при создании любого узла всегда определяется документ, который будет владеть узлом:
У каждого узла есть родитель, указанный ParentNode собственность. Узел не имеет родительского узла, то есть ParentNode является нулевым в следующих случаях:
Вы можете удалить узел от его родителя, позвонив Remove метод. Следующий пример кода показывает, как получить доступ к родительскому узлу:
Наиболее эффективный способ доступа к детским узлам CompositeNode осуществляется через FirstChild и LastChild Свойства, возвращающие первый и последний детские узлы соответственно. Если нет детских узлов, эти свойства возвращаются null.
CompositeNode также обеспечивает GetChildNodes Способ, позволяющий индексировать или перечислять доступ к узлам ребенка. The ChildNodes собственность - это живая коллекция узлов, что означает, что всякий раз, когда документ изменяется, например, когда узлы удаляются или добавляются, ChildNodes Коллекция обновляется автоматически.
Если у узла нет ребенка, то ChildNodes Имущество возвращает пустую коллекцию. Вы можете проверить, является ли CompositeNode содержит любые детские узлы, использующие HasChildNodes собственность.
Следующий пример кода показывает, как перечислить непосредственные узлы ребенка. CompositeNode используя числитель, предоставленный ChildNodes коллекция:
Следующий пример кода показывает, как перечислить непосредственные узлы ребенка. CompositeNode Использование индексированного доступа:
Вы можете получить узел, который непосредственно предшествует или следует за конкретным узлом, используя PreviousSibling и NextSibling свойств соответственно. Если узел является последним ребенком своего родителя, то NextSibling собственность является null. Если же узел является первым ребенком своего родителя, то PreviousSibling собственность является null.
Следующий пример кода показывает, как эффективно посещать все прямые и косвенные дочерние узлы композитного узла:
До сих пор мы обсуждали свойства, возвращающие один из базовых типов. Node или CompositeNode. Но иногда бывают ситуации, когда вам может потребоваться отбросить значения в определенный класс узлов, например: Run или Paragraph. То есть вы не можете полностью уйти от кастинга при работе с Aspose.Words DOM, который является составным.
Чтобы уменьшить потребность в литье, большинство Aspose.Words Классы предоставляют свойства и коллекции, которые обеспечивают строго типизированный доступ. Существует три основных шаблона типизированного доступа:
Типовые свойства - это просто полезные ярлыки, которые иногда обеспечивают более легкий доступ, чем общие свойства, унаследованные от других типов. Node.ParentNode и CompositeNode.FirstChild.
Следующий пример кода показывает, как использовать типизированные свойства для доступа к узлам дерева документов:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.