Praca z DOM

Overview

Warstwa DOM modeluje stronę HTML jako drzewo typowanych węzłów. Document jest punktem wejścia i fabryką węzłów; Element i Node przeprowadzają manipulację i przeglądanie API.


Tworzenie węzłów

Document.create_element(), create_text_node(), create_comment() i create_document_fragment() tworzą węzły; append_child() je dołącza:

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() i remove_attribute() zarządzają atrybutami znaczników; Attr i NamedNodeMap udostępniają je jako obiekty:

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)

Operacje na drzewie

Node dostarcza zestaw narzędzi strukturalnych: insert_before(), remove_child(), replace_child(), clone_node() i contains(), a także child_nodes, parent_node i first_child akcesory oraz text_content do tekstu poddrzewa. get_root_node() i has_child_nodes() odpowiadają bezpośrednio na pytania strukturalne.

Wyszukiwanie i przeglądanie

Document.get_element_by_id() pobiera elementy według id. NodeList i HTMLCollection przechowują zestawy wyników; NodeIterator i TreeWalker (z NodeFilter) przeglądają poddrzewa w kolejności dokumentu.

Obserwowanie mutacji

MutationObserver rejestruje zmiany drzewa jako wpisy MutationRecord, odzwierciedlając standardowy wzorzec obserwatora do reagowania na edycje strukturalne.


Wskazówki i najlepsze praktyki

  • Twórz każdy węzeł za pośrednictwem właściciela Document — węzły mają zakres dokumentu; użyj Document.import_node() lub adopt_node(), aby przenieść je między dokumentami.
  • Preferuj text_content do tekstu całego poddrzewa zamiast ręcznego manipulowania węzłami Text.
  • Użyj DocumentFragment, aby złożyć partie węzłów przed pojedynczym append_child()
  • Sprawdź has_attribute() przed get_attribute(), gdy brakujący atrybut ma znaczenie

Typowe problemy

ProblemPrzyczynaNaprawa
Węzeł pojawia się w niewłaściwym dokumencieWęzeł utworzony przez inny DocumentPrzenieś go najpierw przy użyciu import_node() lub adopt_node()
Wyszukiwanie atrybutu nie zwraca nicAtrybut nigdy nie został ustawiony na elemencieZabezpiecz przy użyciu has_attribute()
Tekst poddrzewa jest pustyOdczytywanie text_content przed dołączeniem dzieciDołącz dzieci, a potem odczytaj

FAQ

Która klasa tworzy nowe elementy?

Document — jej metoda create_element() jest fabryką elementów, z pokrewnymi fabrykami dla tekstu, komentarzy i fragmentów.

Jak przenieść poddrzewo między dwoma dokumentami?

Użyj Document.import_node(), aby skopiować lub adopt_node(), aby przenieść, a następnie dołącz przy użyciu append_child().

Czy istnieje obserwator API dla zmian w drzewie?

Tak — MutationObserver dostarcza partie MutationRecord opisujące zmiany strukturalne i atrybutów.


API Reference Podsumowanie

Klasa/MetodaOpis
Document.create_elementUtwórz węzeł elementu
Document.get_element_by_idWyszukaj element po id
Element.set_attributeUstaw atrybut znaczników
Node.insert_beforeWstaw węzeł przed referencyjnym dzieckiem
Node.clone_nodeSkopiuj węzeł lub poddrzewo
MutationObserverObserwuj mutacje drzewa
TreeWalkerFiltrowane przechodzenie w kolejności dokumentu

Zobacz także

 Polski