Aspose.Words Document Object Model (DOM)

The Aspose.Words Document Object Model )أ(DOM() هو تمثيل داخلي لوثيقة كلمة. The Aspose.Words DOM يُمكّنكم من القراءة والتلاعب وتعديل محتوى وشكل وثيقة الكلمات.

يصف هذا الفرع الفصول الرئيسية من Aspose.Words DOM وعلاقاتهم باستخدام Aspose.Words DOM فصول، يمكنك الحصول على وصول برنامجي إلى عناصر الوثائق والتشكيل.

وثيقة الإنشاء شجرة الوجه

عند قراءة الوثيقة Aspose.Words <span notrans="<span notrans=" DOM"="">" وبعد ذلك تُبنى شجرة الجسم وأنواع مختلفة من عناصر وثيقة المصدر لها DOM أجسام الأشجار ذات خصائص مختلفة

Build Document Nodes Tree

عندما Aspose.Words يقرأ وثيقة وورد في الذاكرة، ويخلق أجساما من أنواع مختلفة تمثل مختلف عناصر الوثائق. وكل حرف من النص أو الفقرة أو الجدول أو القسم هو رمز، وحتى الوثيقة ذاتها هي رمز. Aspose.Words يُعرّفُ a فصل لكلّ نوع رمز الوثيقةِ.

شجرة الوثيقة في Aspose.Words يلي خطة التصميم المركبة:

  • كل أصناف العقد مستمدة في نهاية المطاف من Node الدرجة، التي هي درجة القاعدة في Aspose.Words Document Object Model. -الأنواد التي يمكن أن تحتوي على رموز أخرى، على سبيل المثال Section أو Paragraph, مستمد من CompositeNode الدرجة التي تستمد بدورها من Node الصف

ويبين الرسم البياني الوارد أدناه الميراث بين فئات العقيدة من Aspose.Words Document Object Model )أ(DOM) (أسماء الطبقات المجردة في (إيتاليكس

aspose-words-dom

دعونا ننظر إلى مثال. الصورة التالية تظهر Microsoft Word وثيقة ذات أنواع مختلفة من المحتوى.

document-example

عند قراءة الوثيقة المذكورة أعلاه في Aspose.Words DOM, وتُنشأ شجرة الأجسام، على النحو المبين في الشكل أدناه.

document-example-dom

Document, Section, Paragraph, Table, Shape, Run, وجميع الشظايا الأخرى على الرسم البياني Aspose.Words الأجسام التي تمثل عناصر من وثيقة الكلمات.

الحصول على Node النوع

على الرغم من Node الطبقة كافية لتمييز مختلف عن بعضها البعض Aspose.Words يوفر NodeType العد لتبسيط بعض API مهام من قبيل اختيار عقد من نوع محدد.

يمكن الحصول على نوع كل عقدة باستخدام NodeType ملكية هذه الملكية تعود NodeType قيمة العد على سبيل المثال، صيغة فقرة ممثّلة من قبل Paragraph عوائد الصف NodeType.Paragraphوموعد جدول يمثله Table عوائد الصف NodeType.Table.

المثال التالي يبين كيفية الحصول على نوع العقد باستخدام NodeType العد:

Document Tree Navigation

Aspose.Words يُمثّلُ a وثيقة كشجرةِ العقدِ، الذي يُمْكِنُك أَنْ تُبحرَ بين العقدِ. يصف هذا القسم كيفية استكشاف ونقل شجرة الوثائق في Aspose.Words.

عندما تَفْتحُ وثيقةَ العينةَ، قُدّمتْ في وقت سابق، في مستكشفِ الوثيقةِ، شجرةِ العقدِ تَظْهرُ بالضبط كما هو ممثّلُ في Aspose.Words.

document-in-document-explorer

الوثيقة Node Relationships

الأنهار في الشجرة لها علاقات بينهما

  • العقد الذي يحتوي على عقد آخر هو parent.
  • الشعار الوارد في العقد الأبوي هو child. ندوات الأطفال من نفس الوالد sibling المشنقة
  • root المعبد دائماً Document موكب

العقد الذي يمكن أن يحتوي على عقد آخر مستمد من CompositeNode الطبقة، وجميع العقد مستمدة في نهاية المطاف من Node صف ويوفر هذان الصفان الأساسيان أساليب وممتلكات مشتركة للملاحة والتعديل في هيكل الأشجار.

ويبين الرسم البياني للجسم التالي " إم إل " عدة رموز من وثيقة العينة وعلاقتها ببعضها البعض عن طريق الأم والطفل والممتلكات الشقيقة:

document-nodes-relationships

(الوثيقة هي ملكية (نود

وينتمي العقد دائما إلى وثيقة معينة، حتى لو كان قد أنشئ للتو أو أزيل من الشجرة، لأن الهياكل الحيوية على نطاق الوثائق مثل المواثيق والقوائم مخزنة في Document موكب على سبيل المثال، لا يمكن أن يكون هناك Paragraph بدون Document لأن لكل فقرة أسلوب معين معرّف عالمياً في الوثيقة. وتستخدم هذه القاعدة عند إنشاء أي عقد جديد. إضافة جديدة Paragraph مباشرة إلى DOM يتطلّب أن يُسلّم إلى المُنشئ غرضاً من الوثائق.

عند وضع فقرة جديدة باستخدام DocumentBuilder, البنّاء دائماً لديه Document صنف مرتبط به من خلال DocumentBuilder.Document ملكية

ويوضح المثال الرمزي التالي أنه عند إنشاء أي عقد، فإن الوثيقة التي ستمتلك العقد تحدد دائما:

الوالدين

لكل عقدة والد يحدده ParentNode ملكية أي عقدة ليس لها عُقد أبوي، ذلك، ParentNode لاغي في الحالات التالية:

  • لقد تم إنشاء العقد ولم يضاف بعد إلى الشجرة
  • تم إزالة العقد من الشجرة
  • هذا هو الجذر Document الشعار الذي يكون دائماً لاغياً

يمكنك أن تزيل عقدة من والدها عن طريق الاتصال Remove طريقة The following code example shows how to access the parent node:

أطفال

أكفأ طريقة للوصول إلى الأطفال CompositeNode هو عبر FirstChild و LastChild الخواص التي تُعيد الندوتين الأولى والأخيرة للطفل، على التوالي. إذا لم يكن هناك أطفال، تعود هذه الممتلكات null.

CompositeNode يوفر أيضا ChildNodes (ج) جمع مواد تمكّن من الوصول المفهرس أو المعدّد إلى عقد الأطفال. The ChildNodes فالملكية عبارة عن مجموعة حية من العقيدات، مما يعني أنه كلما تغيرت الوثيقة، مثل عندما تُزال أو تُضاف العقيدات، ChildNodes ويتم التحديث تلقائيا للجمع.

إذا لم يكن هناك طفل ChildNodes تُعيد الممتلكات مجموعة فارغة يمكنك التحقق ما إذا كان CompositeNode يتضمّن أيّ ندوات للأطفال تستخدم HasChildNodes ملكية

ويبيّن المثال الرمزي التالي كيف يُعدّد الأكواد المخصصة للطفل مباشرة CompositeNode استخدام العدادات المقدمة من ChildNodes المجموعة:

ويبيّن المثال الرمزي التالي كيف يُعدّد الأكواد المخصصة للطفل مباشرة CompositeNode استخدام الوصول المفهرس:

Sibling Nodes

يمكنك الحصول على العقد الذي يسبق أو يتبع عقد معين باستخدام PreviousSibling و NextSibling الممتلكات، على التوالي. إذا كان الموكب هو آخر طفل لوالده، ثم NextSibling الممتلكات null. وعلى العكس من ذلك، إذا كان المعبد أول طفل من والديه، PreviousSibling الممتلكات null.

The following code example shows how to efficiently visit all direct and indirect child nodes of a composite node:

Typed Access to Child and Parent Nodes

لقد ناقشنا حتى الآن الممتلكات التي تعيد أحد أنواع القاعدة Node أو CompositeNode. ولكن في بعض الأحيان هناك حالات قد تحتاج فيها إلى إعطاء القيم لفصل معين، مثل Run أو Paragraph. هذا هو، لا يمكنك تماما الابتعاد عن القذف عندما العمل مع Aspose.Words DOM, وهو مركب.

للحد من الحاجة إلى التلقيح Aspose.Words وتوفر الصفوف الخواص والتحصيلات التي توفر إمكانية الوصول على شكل قوي. وهناك ثلاثة أنماط أساسية من الوصول المطبعي:

-عميد الوالدين يفضح من نوعه FirstXXX و LastXXX الممتلكات. على سبيل المثال، Document لديه FirstSection و LastSection الممتلكات. وبالمثل، Table لها خصائص مثل FirstRow, LastRow, والآخرون

إن الممتلكات المصنَّفة هي مجرد اختصارات مفيدة توفر في بعض الأحيان سهولة الحصول على الممتلكات العامة الموروثة من الممتلكات العامة Node.ParentNode و CompositeNode.FirstChild.

The following code example shows how to use typed properties to access nodes of the document tree: