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 Document proprietario — i nodi hanno ambito a livello di documento; usa Document.import_node() o adopt_node() per spostarli tra documenti.
  • Preferisci text_content per il testo dell’intero sottoalbero rispetto al manuale manipolazione dei nodi Text.
  • Usa DocumentFragment per assemblare lotti di nodi prima di un singolo append_child()
  • Controlla has_attribute() prima di get_attribute() quando un attributo mancante è significativo

Problemi comuni

ProblemaCausaCorrezione
Il nodo appare nel documento sbagliatoNodo creato da un Document diversoSpostalo con import_node() o adopt_node() prima
La ricerca dell’attributo non restituisce nullaL’attributo non è mai stato impostato sull’elementoProteggi con has_attribute()
Il testo del sottoalbero è vuotoLettura di text_content prima che i figli siano allegatiAllega 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/MetodoDescrizione
Document.create_elementCrea un nodo elemento
Document.get_element_by_idCerca un elemento per id
Element.set_attributeImposta un attributo di markup
Node.insert_beforeInserisci un nodo prima di un figlio di riferimento
Node.clone_nodeCopia un nodo o un sottoalbero
MutationObserverOsserva le mutazioni dell’albero
TreeWalkerAttraversamento in ordine di documento filtrato

Vedi anche

 Italiano