Aspose.Words Document Object Model (DOM)
The The The The The The Aspose.Words Document Object Model ()DOM• نمایندگی درونی یک سند Word است. The The The The The The Aspose.Words DOM اجازه می دهد تا شما را به برنامه ریزی، دستکاری، و اصلاح محتوا و قالب بندی یک سند Word.
این بخش کلاس های اصلی را توصیف می کند. Aspose.Words DOM و روابط آنها. با استفاده از Aspose.Words DOM کلاس ها، شما می توانید دسترسی برنامه ای به عناصر سند و قالب بندی به دست آورید.
ایجاد سند Object Tree
هنگامی که یک سند در داخل خوانده می شود Aspose.Words <span notrans="<span notrans=" DOM"="">"> سپس یک درخت شی ساخته شده و انواع مختلف عناصر سند منبع خود را دارند. DOM اشیاء درخت با خواص مختلف
ساخت گره های سند درخت
وقتی Aspose.Words یک سند کلمه را در حافظه بخوانید، اشیاء انواع مختلف را ایجاد می کند که عناصر سند مختلف را نمایندگی می کنند. هر اجرای یک متن، پاراگراف، جدول یا بخش یک گره است و حتی خود سند یک گره است. Aspose.Words تعریف یک کلاس برای هر نوع گره سند.
درخت سند در Aspose.Words الگوی طراحی کامپوزیت:
- تمام کلاس های گره در نهایت از Node کلاس، که کلاس پایه در Aspose.Words Document Object Model…
- به عنوان مثال، گره هایی که می توانند حاوی گره های دیگر باشند. Section یا Paragraph, برگرفته از CompositeNode طبقه، که به نوبه خود از Node کلاس
نمودار ارائه شده در زیر نشان می دهد ارث بین کلاس های گره Aspose.Words Document Object Model ()DOM) نام کلاس های انتزاعی در Italics است.
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 تکرار:
مستند Tree Navigation
Aspose.Words نشان دهنده یک سند به عنوان یک درخت گره است که شما را قادر می سازد بین گره ها حرکت کنید. این بخش توضیح می دهد که چگونه درخت سند را بررسی و هدایت کنیم. Aspose.Words…
هنگامی که سند نمونه را باز می کنید، که قبلاً در سند اکسپلورر ارائه شده است، درخت گره دقیقاً به نظر می رسد که در آن نشان داده شده است. Aspose.Words…
ارتباطات Node
گره های درخت بین آنها روابط دارند:
- یک گره حاوی گره دیگر یک گره است parent.
- گره موجود در گره والدین یک گره است. child. گره های کودک همان والدین sibling گره ها
- The root گره همیشه Document گره
گره هایی که می توانند از گره های دیگر مشتق شوند CompositeNode کلاس و تمام گره ها در نهایت از Node کلاس این دو کلاس پایه روش ها و خواص مشترک برای ناوبری و اصلاح ساختار درخت را فراهم می کنند.
نمودار شی UML نشان می دهد چندین گره از سند نمونه و روابط آنها با یکدیگر از طریق والدین، کودک و خواص برادر:
برچسب ها: Node Owner
یک گره همیشه به یک سند خاص تعلق دارد، حتی اگر فقط از درخت ساخته شده یا حذف شده باشد، زیرا ساختارهای حیاتی در سراسر سند مانند سبک ها و لیست ها در آن ذخیره می شوند. Document گره به عنوان مثال، ممکن نیست که یک Paragraph بدون هیچ Document از آنجا که هر پاراگراف دارای سبک اختصاص داده شده است که در سطح جهانی برای سند تعریف شده است. این قانون در هنگام ایجاد گره های جدید استفاده می شود. اضافه کردن یک جدید Paragraph مستقیم به DOM نیاز به یک شیء سند به سازنده دارد.
هنگام ایجاد یک پاراگراف جدید با استفاده از DocumentBuilder, سازنده همیشه یک Document کلاس مرتبط با آن از طریق DocumentBuilder.Document مالکیت
مثال کد زیر نشان می دهد که هنگام ایجاد هر گره، سندی که دارای گره باشد همیشه تعریف می شود:
گره پدر و مادر
هر گره دارای یک والد مشخص شده توسط ParentNode مالکیت یک گره هیچ گره پدر و مادر ندارد، یعنی ParentNode در موارد زیر null است:
- این گره ساخته شده و هنوز به درخت اضافه نشده است.
- این گره از درخت برداشته شده است.
- این ریشه است Document گره ای که همیشه دارای یک گره پدر و مادر خالص است.
شما می توانید یک گره از پدر و مادر خود را با تماس با Remove روش مثال کد زیر نشان می دهد که چگونه به گره والدین دسترسی داشته باشید:
گره های کودک
کارآمدترین راه برای دسترسی به گره های کودک CompositeNode از طریق FirstChild و LastChild خواصی که به ترتیب اولین و آخرین گره های کودک را برمی گردانند. اگر گره های کودک وجود نداشته باشد، این خواص بازمی گردند null…
CompositeNode همچنین فراهم می کند ChildNodes مجموعه ای که امکان دسترسی به گره های کودک را می دهد و یا به آن متصل می شود. The The The The The The ChildNodes مالکیت یک مجموعه زنده از گره ها است، به این معنی که هر زمان که سند تغییر می کند، مانند زمانی که گره ها برداشته یا اضافه می شوند، ChildNodes جمع آوری به طور خودکار به روز می شود.
اگر فرزندی نداشته باشد، ChildNodes اموال یک مجموعه خالی را باز می گرداند. می توانید بررسی کنید که آیا CompositeNode شامل هر گره کودک با استفاده از HasChildNodes مالکیت
مثال کد زیر نشان می دهد که چگونه گره های کودک فوری را از یک کودک پر کنیم CompositeNode
استفاده از enumerator ارائه شده توسط ChildNodes
مجموعه:
مثال کد زیر نشان می دهد که چگونه گره های کودک فوری را از یک کودک پر کنیم CompositeNode
استفاده از دسترسی فهرست شده:
Sibling Nodes
شما می توانید گره را که بلافاصله قبل یا دنبال یک گره خاص با استفاده از گره خاص PreviousSibling و NextSibling به ترتیب خواص اگر یک گره آخرین فرزند پدر و مادر خود باشد، NextSibling مالکیت null… در مقابل، اگر گره اولین فرزند پدر و مادر خود باشد، PreviousSibling مالکیت null…
مثال کد زیر نشان می دهد که چگونه به طور موثر از تمام گره های مستقیم و غیر مستقیم کودک از یک گره کامپوزیت بازدید کنید:
نوع دسترسی به گره های کودک و والدین
تا کنون، ما درباره خواصی که یکی از انواع پایه را برگردانده اند، بحث کرده ایم. Node یا CompositeNode… اما گاهی اوقات شرایطی وجود دارد که شما ممکن است نیاز به ایجاد ارزش به یک کلاس گره خاص، مانند Run یا Paragraph… این است که شما نمی توانید به طور کامل از ریخته گری در هنگام کار با Aspose.Words DOM, که کامپوزیت است.
برای کاهش نیاز به ریخته گری، بیشتر Aspose.Words کلاس ها ویژگی ها و مجموعه هایی را ارائه می دهند که دسترسی به شدت تایپ شده را فراهم می کنند. سه الگوی اساسی از نوع دسترسی وجود دارد:
- یک گره پدر و مادر نشان می دهد FirstXXX و LastXXX خواص برای مثال، Document دارای FirstSection و LastSection خواص به طور مشابه، Table خواصی مانند FirstRow, LastRow, و دیگران.
- یک گره والدین مجموعه ای از گره های کودک مانند Document.Sections, Body.Paragraphs, و دیگران.
- یک گره کودک دسترسی به پدر و مادر خود را، مانند Run.ParentParagraph, Paragraph.ParentSection, و دیگران.
ویژگی های تایپ شده صرفاً میانبرهای مفید هستند که گاهی اوقات دسترسی آسان تری نسبت به خواص عمومی به ارث می رسد. Node.ParentNode و CompositeNode.FirstChild…
مثال کد زیر نشان می دهد که چگونه از خواص تایپ شده برای دسترسی به گره های درخت سند استفاده کنید: