Робота з DOM

Робота з DOM

Шар DOM моделює HTML сторінку як дерево типізованих вузлів. Document є точкою входу та фабрикою вузлів; Element і Node виконують маніпуляції та обход API.


Створення вузлів

Document.create_element(), create_text_node(), create_comment() і create_document_fragment() створюють вузли; append_child() їх приєднує:

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() і remove_attribute() керують атрибутами розмітки; Attr і NamedNodeMap надають їх як об’єкти:

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)

Операції над деревом

Node постачає структурний інструментарій: insert_before(), remove_child(), replace_child(), clone_node() та contains(), а також child_nodes, parent_node і first_child аксесори та text_content для тексту піддерева. get_root_node() і has_child_nodes() відповідають на структурні питання безпосередньо.

Пошук та обхід

Document.get_element_by_id() отримує елементи за id. NodeList і HTMLCollection містять набори результатів; NodeIterator і TreeWalker (з NodeFilter) обходять піддерева у порядку документа.

Спостереження за мутаціями

MutationObserver реєструє зміни дерева у вигляді записів MutationRecord, відображаючи стандартний патерн спостерігача для реакції на структурні редагування.


Поради та найкращі практики

  • Створюйте кожен вузол через власника Document — вузли мають область дії документу; використовуйте Document.import_node() або adopt_node() для переміщення їх між документами.
  • Віддавайте перевагу text_content для отримання тексту всього піддерева замість ручного маніпулювання вузлами Text.
  • Використовуйте DocumentFragment для створення пакетів вузлів перед одним append_child()
  • Перевірте has_attribute() перед get_attribute(), коли відсутність атрибуту має значення

Поширені проблеми

ПроблемаПричинаВиправлення
Вузол з’являється в неправильному документіВузол створений іншим DocumentПеремістіть його за допомогою import_node() або adopt_node() спочатку
Пошук атрибуту нічого не повертаєАтрибут ніколи не встановлюється на елементіОхорона за допомогою has_attribute()
Текст піддерева порожнійЧитання text_content до приєднання дочірніх елементівПриєднайте дочірні елементи, потім читайте

FAQ

Який клас створює нові елементи?

Document — його метод create_element() є фабрикою елементів, разом із сусідніми фабриками для тексту, коментарів та фрагментів.

Як перемістити піддерево між двома документами?

Використовуйте Document.import_node() для копіювання або adopt_node() для перенесення, потім приєднайте за допомогою append_child().

Чи існує спостерігач API для змін дерева?

Так — MutationObserver постачає MutationRecord пакети, що описують структурні та атрибутні зміни.


Підсумок API Reference

Клас/МетодОпис
Document.create_elementСтворити вузол елемента
Document.get_element_by_idЗнайти елемент за ID
Element.set_attributeВстановити атрибут розмітки
Node.insert_beforeВставити вузол перед дочірнім елементом-посиланням
Node.clone_nodeКопіювати вузол або піддерево
MutationObserverСпостерігати мутації дерева
TreeWalkerФільтрований обхід у порядку документа

Дивіться також

 Українська