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; verwendeDocument.import_node()oderadopt_node(), um sie zwischen Dokumenten zu verschieben. - Bevorzuge
text_contentfür Text des gesamten Teilbaums gegenüber manuellemText-Knoten-Handling. - Verwenden Sie
DocumentFragment, um Stapel von Knoten vor einem einzelnenappend_child()zusammenzustellen. - Überprüfen Sie
has_attribute()vorget_attribute(), wenn ein fehlendes Attribut von Bedeutung ist.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Node erscheint im falschen Dokument | Node erstellt von einem anderen Document | Verschiebe es zuerst mit import_node() oder adopt_node() |
| Attributsuche liefert nichts | Attribut wurde nie am Element gesetzt | Schütze mit has_attribute() |
| Der Text des Teilbaums ist leer | Lese text_content, bevor Kinder angehängt wurden | Kinder 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/Methode | Beschreibung |
|---|---|
Document.create_element | Erstelle einen Elementknoten |
Document.get_element_by_id | Ein Element nach ID suchen |
Element.set_attribute | Setzt ein Markup-Attribut |
Node.insert_before | Einen Knoten vor einem Referenzkind einfügen |
Node.clone_node | Einen Knoten oder Teilbaum kopieren |
MutationObserver | Baummutationen beobachten |
TreeWalker | Gefilterter Dokumentenreihenfolge-Durchlauf |