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() 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 | id द्वारा एक तत्व खोजें |
Element.set_attribute | एक मार्कअप एट्रिब्यूट सेट करें |
Node.insert_before | संदर्भ बाल से पहले एक नोड डालें |
Node.clone_node | एक नोड या सबट्री की कॉपी करें |
MutationObserver | ट्री में परिवर्तन देखें |
TreeWalker | फ़िल्टर किया गया दस्तावेज़-क्रम ट्रैवर्सल |