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
Documentpropriétaire— les nœuds sont limités au document; utilisezDocument.import_node()ouadopt_node()pour les déplacer entre documents. - Privilégiez
text_contentpour le texte d’un sous-arbre complet plutôt que de manipuler manuellement les nœudsText. - Utilisez
DocumentFragmentpour assembler des lots de nœuds avant un seulappend_child() - Vérifiez
has_attribute()avantget_attribute()lorsqu’un attribut manquant a du sens
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| Le nœud apparaît dans le mauvais document | Nœud créé par un Document différent | Déplacez-le avec import_node() ou adopt_node() d’abord |
| La recherche d’attribut ne renvoie rien | L’attribut n’a jamais été défini sur l’élément | Protéger avec has_attribute() |
| Le texte du sous-arbre est vide | Lecture de text_content avant que les enfants soient attachés | Attacher 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éthode | Description |
|---|---|
Document.create_element | Créer un nœud d’élément |
Document.get_element_by_id | Rechercher un élément par id |
Element.set_attribute | Définir un attribut de balisage |
Node.insert_before | Insérer un nœud avant un enfant de référence |
Node.clone_node | Copier un nœud ou un sous-arbre |
MutationObserver | Observer les mutations de l’arbre |
TreeWalker | Parcours filtré dans l’ordre du document |