Lucrul cu DOM-ul
Lucrul cu DOM
Stratul DOM modelează o pagină HTML ca un arbore de noduri tipizate. Document este punctul de intrare și fabrica de noduri; Element și Node realizează manipularea și traversarea API.
Crearea nodurilor
Document.create_element(), create_text_node(), create_comment() și create_document_fragment() produc noduri; append_child() le atașează:
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() și remove_attribute() gestionează atributele de marcare; Attr și NamedNodeMap le expun ca obiecte:
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)Operații pe arbore
Node furnizează trusa structurală: insert_before(), remove_child(), replace_child(), clone_node() și contains(), plus accesoriile child_nodes, parent_node și first_child și text_content pentru textul subarborelui. get_root_node() și has_child_nodes() răspund direct la întrebări structurale.
Căutare și Traversare
Document.get_element_by_id() recuperează elementele după id. NodeList și HTMLCollection dețin seturi de rezultate; NodeIterator și TreeWalker (cu NodeFilter) parcurg subarborii în ordine de document.
Observarea mutațiilor
MutationObserver înregistrează modificările arborelui ca intrări MutationRecord, oglindind modelul standard de observator pentru reacționarea la editări structurale.
Sfaturi și cele mai bune practici
- Creează fiecare nod prin
Documentdeținator — nodurile au domeniu la nivel de document; foloseșteDocument.import_node()sauadopt_node()pentru a le muta între documente - Preferă
text_contentpentru textul întregului subarbore în loc de manipularea manuală a nodurilorText - Folosește
DocumentFragmentpentru a aduna grupuri de noduri înainte de un singurappend_child() - Verifică
has_attribute()înainte deget_attribute()când un atribut lipsă este semnificativ
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
| Nodul apare în documentul greșit | Nod creat de un alt Document | Mută-l cu import_node() sau adopt_node() mai întâi |
| Căutarea atributului nu returnează nimic | Atributul nu a fost niciodată setat pe element | Protecție cu has_attribute() |
| Textul subarborelui este gol | Citirea text_content înainte de atașarea copiilor | Atașează copiii, apoi citește |
FAQ
Ce clasă creează elemente noi?
Document — metoda sa create_element() este fabrica pentru elemente, cu fabrici înrudite pentru text, comentarii și fragmente.
Cum pot muta un subarbore între două documente?
Folosește Document.import_node() pentru a copia sau adopt_node() pentru a transfera, apoi atașează cu append_child().
Există un observator API pentru modificările arborelui?
Da — MutationObserver furnizează loturi MutationRecord care descriu modificări structurale și de atribut.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
Document.create_element | Creează un nod de element |
Document.get_element_by_id | Caută un element după ID |
Element.set_attribute | Setează un atribut de markup |
Node.insert_before | Inserează un nod înainte de un copil de referință |
Node.clone_node | Copiază un nod sau un subarbore |
MutationObserver | Observă mutațiile arborelui |
TreeWalker | Traversare filtrată în ordine de document |