العمل مع DOM

العمل مع DOM

طبقة DOM تُنمذج صفحة HTML كشجرة من العقد ذات النوع. Document هو نقطة الدخول ومصنع العقد؛ Element وNode يتوليان API للتلاعب والتنقل.


إنشاء العقد

Document.create_element()، create_text_node()، create_comment()، وcreate_document_fragment() ينتجون عقدًا؛ append_child() يربطها:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
doc.append_child(el)

Attributes

Element.set_attribute()، get_attribute()، has_attribute()، وremove_attribute() يديرون سمات العلامات؛ Attr وNamedNodeMap يكشفونها ككائنات:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)

عمليات الشجرة

Node يوفّر مجموعة الأدوات الهيكلية: insert_before()، remove_child()، replace_child()، clone_node()، وcontains()، بالإضافة إلى المتحصلات child_nodes، parent_node، وfirst_child وtext_content لنص الشجرة الفرعية. get_root_node() وhas_child_nodes() يجيبان على الأسئلة الهيكلية مباشرة.

البحث والتنقل

Document.get_element_by_id() يسترجع العناصر حسب المعرف. NodeList وHTMLCollection يحتفظان بمجموعات النتائج؛ NodeIterator وTreeWalker (مع NodeFilter) يتجولان في الأشجار الفرعية بترتيب المستند.

مراقبة التحولات

MutationObserver يسجّل تغييرات الشجرة كمدخلات MutationRecord، معكساً نمط المراقب القياسي للتعامل مع التعديلات الهيكلية.


نصائح وأفضل الممارسات

  • أنشئ كل عقدة عبر Document المالك — العقد ذات نطاق وثائقي؛ استخدم Document.import_node() أو adopt_node() لنقلها بين المستندات
  • فضّل text_content لنص الشجرة الفرعية بالكامل على التعامل اليدوي مع عقد Text
  • استخدم DocumentFragment لتجميع دفعات من العقد قبل append_child() واحد
  • تحقق من has_attribute() قبل get_attribute() عندما يكون فقدان السمة ذو معنى

المشكلات الشائعة

مشكلةالسببإصلاح
العقدة تظهر في المستند الخطأالعقدة تم إنشاؤها بواسطة Document مختلفانقلها باستخدام import_node() أو adopt_node() أولاً
البحث عن السمة لا يُعيد شيئًاالسمة لم تُعيّن أبدًا على العنصرحماية باستخدام has_attribute()
نص الشجرة الفرعية فارغقراءة text_content قبل إرفاق الأطفالإرفاق الأطفال، ثم القراءة

FAQ

أي فئة تُنشئ عناصر جديدة؟

Document — طريقة create_element() الخاصة به هي المصنع للعناصر، مع مصانع شقيقة للنصوص، والتعليقات، والقطع.

كيف أنقل شجرة فرعية بين مستندين؟

استخدم Document.import_node() للنسخ أو adopt_node() للنقل، ثم أرفق باستخدام append_child().

هل هناك مراقب API لتغييرات الشجرة؟

نعم — MutationObserver يوفر دفعات MutationRecord تصف التغييرات الهيكلية والسمات.


API Reference ملخص

فئة/طريقةوصف
Document.create_elementإنشاء عقدة عنصر
Document.get_element_by_idابحث عن عنصر حسب المعرف id
Element.set_attributeتعيين سمة الترميز
Node.insert_beforeأدرج عقدة قبل العنصر الفرعي المرجعي
Node.clone_nodeانسخ عقدة أو شجرة فرعية
MutationObserverراقب تغيرات الشجرة
TreeWalkerتجول بترتيب المستند المصفى

انظر أيضاً

 العربية