Travailler avec le DOM

Travailler avec le DOM

La couche DOM modélise une page HTML comme un arbre de nœuds typés. Document est le point d’entrée et la fabrique de nœuds ; Element et Node assurent la manipulation et le parcours API.


Création de nœuds

Document.create_element(), create_text_node(), create_comment() et create_document_fragment() produisent des nœuds ; append_child() les attache :

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() et remove_attribute() gèrent les attributs de balisage ; Attr et NamedNodeMap les exposent sous forme d’objets :

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)

Opérations d’arbre

Node fournit la boîte à outils structurelle: insert_before(), remove_child(), replace_child(), clone_node() et contains(), ainsi que les accesseurs child_nodes, parent_node et first_child et text_content pour le texte des sous-arbres. get_root_node() et has_child_nodes() répondent directement aux questions structurelles.

Recherche et Traversée

Document.get_element_by_id() récupère les éléments par identifiant. NodeList et HTMLCollection contiennent des ensembles de résultats; NodeIterator et TreeWalker (avec NodeFilter) parcourent les sous-arbres dans l’ordre du document.

Observation des mutations

MutationObserver enregistre les changements d’arbre sous forme d’entrées MutationRecord, reproduisant le modèle d’observateur standard pour réagir aux modifications structurelles.


Conseils et bonnes pratiques

  • Créez chaque nœud via le Document propriétaire— les nœuds sont limités au document; utilisez Document.import_node() ou adopt_node() pour les déplacer entre documents.
  • Privilégiez text_content pour le texte d’un sous-arbre complet plutôt que de manipuler manuellement les nœuds Text.
  • Utilisez DocumentFragment pour assembler des lots de nœuds avant un seul append_child()
  • Vérifiez has_attribute() avant get_attribute() lorsqu’un attribut manquant a du sens

Problèmes courants

ProblèmeCauseCorrection
Le nœud apparaît dans le mauvais documentNœud créé par un Document différentDéplacez-le avec import_node() ou adopt_node() d’abord
La recherche d’attribut ne renvoie rienL’attribut n’a jamais été défini sur l’élémentProtéger avec has_attribute()
Le texte du sous-arbre est videLecture de text_content avant que les enfants soient attachésAttacher les enfants, puis lire

FAQ

Quelle classe crée de nouveaux éléments?

Document — sa méthode create_element() est la fabrique d’éléments, avec des usines sœurs pour le texte, les commentaires et les fragments.

Comment déplacer un sous-arbre entre deux documents?

Utilisez Document.import_node() pour copier ou adopt_node() pour transférer, puis attachez avec append_child().

Existe-t-il un observateur API pour les changements d’arbre?

Oui — MutationObserver fournit des lots MutationRecord décrivant les changements structurels et d’attributs.


Résumé API Reference

Classe/MéthodeDescription
Document.create_elementCréer un nœud d’élément
Document.get_element_by_idRechercher un élément par id
Element.set_attributeDéfinir un attribut de balisage
Node.insert_beforeInsérer un nœud avant un enfant de référence
Node.clone_nodeCopier un nœud ou un sous-arbre
MutationObserverObserver les mutations de l’arbre
TreeWalkerParcours filtré dans l’ordre du document

Voir aussi

 Français