Lavorare con il DOM
Overview
Il livello DOM modella una pagina HTML come un albero di nodi tipizzati. Document è il punto di ingresso e la fabbrica di nodi; Element e Node gestiscono la manipolazione e l’attraversamento API.
Creare nodi
Document.create_element(), create_text_node(), create_comment() e create_document_fragment() producono nodi; append_child() li collega:
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() e remove_attribute() gestiscono gli attributi di markup; Attr e NamedNodeMap li espongono come oggetti:
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)Operazioni sull’albero
Node fornisce il toolkit strutturale: insert_before(), remove_child(), replace_child(), clone_node() e contains(), più i child_nodes, parent_node e first_child accessors e text_content per il testo del sottoalbero. get_root_node() e has_child_nodes() rispondono direttamente a domande strutturali.
Ricerca e attraversamento
Document.get_element_by_id() recupera gli elementi per id. NodeList e HTMLCollection contengono i set di risultati; NodeIterator e TreeWalker (con NodeFilter) percorrono i sottoalberi in ordine di documento.
Osservare le mutazioni
MutationObserver registra le modifiche all’albero come voci MutationRecord, replicando il pattern osservatore standard per reagire alle modifiche strutturali.
Suggerimenti e buone pratiche
- Crea ogni nodo tramite il
Documentproprietario — i nodi hanno ambito a livello di documento; usaDocument.import_node()oadopt_node()per spostarli tra documenti. - Preferisci
text_contentper il testo dell’intero sottoalbero rispetto al manuale manipolazione dei nodiText. - Usa
DocumentFragmentper assemblare lotti di nodi prima di un singoloappend_child() - Controlla
has_attribute()prima diget_attribute()quando un attributo mancante è significativo
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| Il nodo appare nel documento sbagliato | Nodo creato da un Document diverso | Spostalo con import_node() o adopt_node() prima |
| La ricerca dell’attributo non restituisce nulla | L’attributo non è mai stato impostato sull’elemento | Proteggi con has_attribute() |
| Il testo del sottoalbero è vuoto | Lettura di text_content prima che i figli siano allegati | Allega i figli, poi leggi |
FAQ
Quale classe crea nuovi elementi?
Document — il suo metodo create_element() è la fabbrica per gli elementi, con fabbriche sorelle per testo, commenti e frammenti.
Come spostare un sottoalbero tra due documenti?
Usa Document.import_node() per copiare o adopt_node() per trasferire, quindi allega con append_child().
Esiste un osservatore API per le modifiche dell’albero?
Sì — MutationObserver consegna MutationRecord batch che descrivono modifiche strutturali e di attributo.
Riepilogo API Reference
| Classe/Metodo | Descrizione |
|---|---|
Document.create_element | Crea un nodo elemento |
Document.get_element_by_id | Cerca un elemento per id |
Element.set_attribute | Imposta un attributo di markup |
Node.insert_before | Inserisci un nodo prima di un figlio di riferimento |
Node.clone_node | Copia un nodo o un sottoalbero |
MutationObserver | Osserva le mutazioni dell’albero |
TreeWalker | Attraversamento in ordine di documento filtrato |