کار با 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، برای متن کل زیردرخت از text_content استفاده کنید
  • از DocumentFragment برای ترکیب دسته‌های گره‌ها پیش از یک append_child() استفاده کنید
  • هنگامیکه عدم وجود یک ویژگی معنی‌دار است، قبل از get_attribute()، has_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عنصری را با شناسه جستجو کنید
Element.set_attributeیک ویژگی نشانه‌گذاری تنظیم کنید
Node.insert_beforeیک گره را پیش از یک فرزند مرجع درج کنید
Node.clone_nodeیک گره یا زیردرخت را کپی کنید
MutationObserverتغییرات درخت را مشاهده کنید
TreeWalkerپیمایش فیلترشده به ترتیب سند

همچنین ببینید:

 فارسی