Práce s DOM

Overview

Vrstva DOM modeluje stránku HTML jako strom typovaných uzlů. Document je vstupní bod a továrna na uzly; Element a Node provádějí manipulaci a průchod API.


Vytváření uzlů

Document.create_element(), create_text_node(), create_comment() a create_document_fragment() vytvářejí uzly; append_child() je připojuje:

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() a remove_attribute() spravují markup atributy; Attr a NamedNodeMap je vystavují jako objekty:

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)

Operace se stromem

Node poskytuje strukturální sadu nástrojů: insert_before(), remove_child(), replace_child(), clone_node() a contains(), a dále child_nodes, parent_node a first_child přístupové metody a text_content pro text podstromu. get_root_node() a has_child_nodes() odpovídají na strukturální otázky přímo.

Vyhledávání a procházení

Document.get_element_by_id() získává elementy podle id. NodeList a HTMLCollection uchovávají sady výsledků; NodeIterator a TreeWalker (s NodeFilter) procházejí podstromy v pořadí dokumentu.

Sledování mutací

MutationObserver zaznamenává změny stromu jako MutationRecord položky, což odráží standardní vzor pozorovatele pro reakci na strukturální úpravy.


Tipy a osvědčené postupy

  • Vytvářejte každý uzel přes vlastnický Document — uzly jsou v rozsahu dokumentu; použijte Document.import_node() nebo adopt_node() k jejich přesunu mezi dokumenty.
  • Upřednostněte text_content pro celý text podstromu před ručním manipulováním uzlů Text.
  • Použijte DocumentFragment k sestavení dávky uzlů před jedním append_child()
  • Zkontrolujte has_attribute() před get_attribute(), když je chybějící atribut významný.

Časté problémy

ProblémPříčinaOprava
Uzel se objeví ve špatném dokumentuUzel vytvořený jiným DocumentPřesuňte jej nejprve pomocí import_node() nebo adopt_node()
Vyhledávání atributu nevrací nicAtribut nikdy nebyl nastaven na elementuOchrana pomocí has_attribute()
Text podstromu je prázdnýČtení text_content před připojením potomkůPřipojte potomky, pak čtěte

FAQ

Která třída vytváří nové prvky?

Document — jeho metoda create_element() je továrnou na prvky, s sourozeneckými továrnami pro text, komentáře a fragmenty.

Jak přesunu podstrom mezi dvěma dokumenty?

Použijte Document.import_node() ke kopírování nebo adopt_node() k přenosu, poté připojte pomocí append_child().

Existuje pozorovatel API pro změny stromu?

Ano — MutationObserver doručuje MutationRecord dávky popisující strukturální a atributové změny.


API Reference Shrnutí

Třída/metodaPopis:
Document.create_elementVytvořit uzel elementu
Document.get_element_by_idVyhledat prvek podle ID
Element.set_attributeNastavte atribut značky
Node.insert_beforeVložit uzel před referenční potomek
Node.clone_nodeZkopírovat uzel nebo podstrom
MutationObserverPozorovat mutace stromu
TreeWalkerFiltrované procházení v pořadí dokumentu

Viz také:

 Čeština