Werken met de DOM

Overview

De DOM-laag modelleert een HTML pagina als een boom van getypeerde knooppunten. Document is het toegangspunt en knooppuntfabriek; Element en Node voeren de manipulatie en traversal API uit.


Nodes maken

Document.create_element(), create_text_node(), create_comment() en create_document_fragment() produceren nodes; append_child() voegt ze toe:

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() en remove_attribute() beheren markup-attributen; Attr en NamedNodeMap stellen ze beschikbaar als objecten:

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)

Boomoperaties

Node levert de structurele toolkit: insert_before(), remove_child(), replace_child(), clone_node() en contains(), plus de child_nodes, parent_node en first_child accessors en text_content voor subboomtekst. get_root_node() en has_child_nodes() beantwoorden structurele vragen direct.

Opzoeken en Traverseren

Document.get_element_by_id() haalt elementen op basis van id op. NodeList en HTMLCollection bevatten resultaatsverzamelingen; NodeIterator en TreeWalker (met NodeFilter) doorlopen subbomen in documentvolgorde.

Mutaties observeren

MutationObserver registreert boomwijzigingen als MutationRecord invoer, waarbij het standaard observer-patroon wordt nagebootst voor het reageren op structurele bewerkingen.


Tips en best practices

  • Maak elke knoop aan via de eigenaar-Document — knopen hebben document-scope; gebruik Document.import_node() of adopt_node() om ze tussen documenten te verplaatsen
  • Geef de voorkeur aan text_content voor volledige subboomtekst boven handmatig Text knoopmanipulatie
  • Gebruik DocumentFragment om batches van knooppunten samen te stellen vóór een enkele append_child()
  • Controleer has_attribute() vóór get_attribute() wanneer een ontbrekend attribuut betekenisvol is

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Knooppunt verschijnt in het verkeerde documentKnooppunt gecreëerd door een andere DocumentVerplaats het eerst met import_node() of adopt_node()
Attribuutopzoeking geeft niets terugAttribuut nooit ingesteld op het elementBescherm met has_attribute()
Subtree-tekst is leegLezen van text_content voordat kinderen zijn gekoppeldVoeg kinderen toe, lees daarna

FAQ

Welke klasse creëert nieuwe elementen?

Document — zijn create_element()-methode is de fabriek voor elementen, met verwante fabrieken voor tekst, opmerkingen en fragmenten.

Hoe verplaats ik een subboom tussen twee documenten?

Gebruik Document.import_node() om te kopiëren of adopt_node() om over te dragen, en koppel vervolgens met append_child().

Is er een observer API voor boomwijzigingen?

Ja — MutationObserver levert MutationRecord batches die structurele en attribuutwijzigingen beschrijven.


API Reference Samenvatting

Klasse/MethodeBeschrijving
Document.create_elementMaak een elementknoop
Document.get_element_by_idZoek een element op id
Element.set_attributeStel een markup-attribuut in
Node.insert_beforeVoeg een node in vóór een referentie-child
Node.clone_nodeKopieer een node of subboom
MutationObserverObserveer boommutaties
TreeWalkerGefilterde doorloop in documentvolgorde

Zie ook

 Nederlands