Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Words обектен модел на документ (DOM) е представяне в паметта на документ Word. Aspose.Words DOM ви позволява програмно да четете, манипулирате и променяте съдържанието и форматирането на Word документ.
Този раздел описва основните класове Aspose.Words DOM и техните връзки. Използвайки класовете Aspose.Words DOM, можете да получите програмен достъп до елементите на документа и форматирането.
Когато даден документ бъде прочетен в Aspose.Words DOM, тогава се изгражда дърво на обектите и различните типове елементи на документа източник имат свои собствени обекти DOM дърво с различни свойства.
Когато Aspose.Words прочете документ Word в паметта, той създава обекти от различни типове, които представляват различни елементи на документа. Всяко изпълнение на текст, абзац, таблица или раздел е възел и дори самият документ е възел. Aspose.Words дефинира клас за всеки тип възел на документ.
Документното дърво в Aspose.Words следва модела на композитен дизайн:
Диаграмата по-долу показва наследяването между класовете на възлите на обектния модел на документа Aspose.Words (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
Ако даден възел няма дете, тогава свойството 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.