Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
يعد Aspose.Words Document Object Model (DOM) تمثيلاً في الذاكرة لمستند Word. يسمح لك 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.
عند فتح نموذج المستند، الذي تم تقديمه سابقًا، في Document Explorer، تظهر شجرة العقدة تمامًا كما تم تمثيلها في Aspose.Words.
العقد الموجودة في الشجرة لها علاقات فيما بينها:
العقد التي يمكن أن تحتوي على عقد أخرى مشتقة من فئة CompositeNode، وجميع العقد مشتقة في النهاية من فئة Node. توفر هاتان الفئتان الأساسيتان طرقًا وخصائص شائعة للتنقل وتعديل بنية الشجرة.
يُظهر الرسم التخطيطي لكائن UML التالي عدة عقد من نموذج المستند وعلاقاتها ببعضها البعض عبر خصائص الأصل والفرع والأخوة:
تنتمي العقدة دائمًا إلى مستند معين، حتى لو تم إنشاؤها للتو أو إزالتها من الشجرة، لأنه يتم تخزين الهياكل الحيوية على مستوى المستند مثل الأنماط والقوائم في عقدة Document. على سبيل المثال، ليس من الممكن أن يكون لديك Paragraph بدون Document لأن كل فقرة لها نمط معين يتم تعريفه عالميًا للمستند. يتم استخدام هذه القاعدة عند إنشاء أي عقد جديدة. تتطلب إضافة Paragraph جديد مباشرةً إلى ملف DOM تمرير كائن مستند إلى المُنشئ.
عند إنشاء فقرة جديدة باستخدام DocumentBuilder، يكون لدى المنشئ دائمًا فئة Document مرتبطة بها من خلال خاصية DocumentBuilder.Document.
يوضح مثال التعليمات البرمجية التالي أنه عند إنشاء أي عقدة، يتم دائمًا تحديد المستند الذي سيمتلك العقدة:
كل عقدة لها أصل محدد بواسطة خاصية ParentNode. لا تحتوي العقدة على عقدة أصل، أي أن ParentNode تكون فارغة، في الحالات التالية:
يمكنك إزالة عقدة من العقدة الأصلية عن طريق استدعاء طريقة Remove. يوضح مثال التعليمات البرمجية التالي كيفية الوصول إلى العقدة الأصلية:
الطريقة الأكثر فعالية للوصول إلى العقد الفرعية لـ CompositeNode هي عبر خصائص FirstChild وLastChild التي تُرجع العقد الفرعية الأولى والأخيرة، على التوالي. في حالة عدم وجود عقد فرعية، تقوم هذه الخصائص بإرجاع null.
يوفر CompositeNode أيضًا طريقة GetChildNodes التي تتيح الوصول المفهرس أو التعدادي إلى العقد الفرعية. خاصية 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.