עבודה עם ה-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 | חפש אלמנט לפי מזהה |
Element.set_attribute | הגדר תכונת סימון |
Node.insert_before | הוסף צומת לפני צומת רפרנס |
Node.clone_node | העתק צומת או תת-עץ |
MutationObserver | התבונן בשינויים בעץ |
TreeWalker | מעבר מסונן לפי סדר המסמך |