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žijteDocument.import_node()neboadopt_node()k jejich přesunu mezi dokumenty. - Upřednostněte
text_contentpro celý text podstromu před ručním manipulováním uzlůText. - Použijte
DocumentFragmentk sestavení dávky uzlů před jednímappend_child() - Zkontrolujte
has_attribute()předget_attribute(), když je chybějící atribut významný.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
| Uzel se objeví ve špatném dokumentu | Uzel vytvořený jiným Document | Přesuňte jej nejprve pomocí import_node() nebo adopt_node() |
| Vyhledávání atributu nevrací nic | Atribut nikdy nebyl nastaven na elementu | Ochrana 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/metoda | Popis: |
|---|---|
Document.create_element | Vytvořit uzel elementu |
Document.get_element_by_id | Vyhledat prvek podle ID |
Element.set_attribute | Nastavte atribut značky |
Node.insert_before | Vložit uzel před referenční potomek |
Node.clone_node | Zkopírovat uzel nebo podstrom |
MutationObserver | Pozorovat mutace stromu |
TreeWalker | Filtrované procházení v pořadí dokumentu |