Arbeiten mit dem DOM

Overview

Die DOM-Ebene modelliert eine HTML-Seite als Baum von typisierten Knoten. Document ist der Einstiegspunkt und die Knoten-Fabrik; Element und Node übernehmen die Manipulation und Traversierung API.


Knoten erstellen

Document.create_element(), create_text_node(), create_comment() und create_document_fragment() erzeugen Knoten; append_child() fügt sie an:

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() und remove_attribute() verwalten Markup-Attribute; Attr und NamedNodeMap stellen sie als Objekte bereit:

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)

Baumoperationen

Node liefert das strukturelle Toolkit: insert_before(), remove_child(), replace_child(), clone_node() und contains(), plus die child_nodes, parent_node und first_child Zugreifmethoden und text_content für Teilbaum-Text. get_root_node() und has_child_nodes() beantworten strukturelle Fragen direkt.

Suche und Traversierung

Document.get_element_by_id() ruft Elemente anhand ihrer ID ab. NodeList und HTMLCollection enthalten Ergebnissets; NodeIterator und TreeWalker (mit NodeFilter) durchlaufen Teilbäume in Dokumentenreihenfolge.

Beobachtung von Mutationen

MutationObserver zeichnet Baumänderungen als MutationRecord-Einträge auf und spiegelt das Standard-Observer-Muster wider, um auf strukturelle Änderungen zu reagieren.


Tipps und bewährte Vorgehensweisen

  • Erstelle jeden Knoten über das zugehörige Document — Knoten sind dokumentenbezogen; verwende Document.import_node() oder adopt_node(), um sie zwischen Dokumenten zu verschieben.
  • Bevorzuge text_content für Text des gesamten Teilbaums gegenüber manuellem Text-Knoten-Handling.
  • Verwenden Sie DocumentFragment, um Stapel von Knoten vor einem einzelnen append_child() zusammenzustellen.
  • Überprüfen Sie has_attribute() vor get_attribute(), wenn ein fehlendes Attribut von Bedeutung ist.

Häufige Probleme

ProblemUrsacheLösung
Node erscheint im falschen DokumentNode erstellt von einem anderen DocumentVerschiebe es zuerst mit import_node() oder adopt_node()
Attributsuche liefert nichtsAttribut wurde nie am Element gesetztSchütze mit has_attribute()
Der Text des Teilbaums ist leerLese text_content, bevor Kinder angehängt wurdenKinder anhängen, dann lesen

FAQ

Welche Klasse erstellt neue Elemente?

Document — seine create_element()-Methode ist die Fabrik für Elemente, mit verwandten Fabriken für Text, Kommentare und Fragmente.

Wie verschiebe ich einen Teilbaum zwischen zwei Dokumenten?

Verwenden Sie Document.import_node() zum Kopieren oder adopt_node() zum Übertragen, und fügen Sie dann mit append_child() ein.

Gibt es einen Beobachter API für Baumänderungen?

Ja — MutationObserver liefert MutationRecord Chargen, die strukturelle und Attributänderungen beschreiben.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
Document.create_elementErstelle einen Elementknoten
Document.get_element_by_idEin Element nach ID suchen
Element.set_attributeSetzt ein Markup-Attribut
Node.insert_beforeEinen Knoten vor einem Referenzkind einfügen
Node.clone_nodeEinen Knoten oder Teilbaum kopieren
MutationObserverBaummutationen beobachten
TreeWalkerGefilterter Dokumentenreihenfolge-Durchlauf

Siehe auch

 Deutsch