Trabalhando com o DOM

Trabalhando com o DOM

A camada DOM modela uma página HTML como uma árvore de nós tipados. Document é o ponto de entrada e fábrica de nós; Element e Node realizam a manipulação e a travessia API.


Criando Nós

Document.create_element(), create_text_node(), create_comment() e create_document_fragment() produzem nós; append_child() os anexa:

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() e remove_attribute() gerenciam atributos de marcação; Attr e NamedNodeMap os expõem como objetos:

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)

Operações de Árvore

Node fornece o conjunto de ferramentas estruturais: insert_before(), remove_child(), replace_child(), clone_node() e contains(), além dos acessores child_nodes, parent_node e first_child e text_content para texto de subárvore. get_root_node() e has_child_nodes() respondem diretamente a perguntas estruturais.

Busca e Percurso

Document.get_element_by_id() recupera elementos por id. NodeList e HTMLCollection mantêm conjuntos de resultados; NodeIterator e TreeWalker (com NodeFilter) percorrem subárvores na ordem do documento.

Observando Mutações

MutationObserver registra alterações da árvore como entradas MutationRecord, espelhando o padrão clássico de observador para reagir a edições estruturais.


Dicas e Melhores Práticas

  • Crie cada nó através do Document proprietário — os nós têm escopo de documento; use Document.import_node() ou adopt_node() para movê-los entre documentos.
  • Prefira text_content para texto de subárvore inteira em vez de manipular manualmente nós Text.
  • Use DocumentFragment para montar lotes de nós antes de um único append_child()
  • Verifique has_attribute() antes de get_attribute() quando um atributo ausente for significativo

Problemas Comuns

ProblemaCausaCorreção
Nó aparece no documento erradoNó criado por um Document diferenteMova-o com import_node() ou adopt_node() primeiro
A pesquisa de atributo não retorna nadaAtributo nunca definido no elementoProteja com has_attribute()
O texto da subárvore está vazioLendo text_content antes de anexar os filhosAnexe os filhos, depois leia

FAQ

Qual classe cria novos elementos?

Document — seu método create_element() é a fábrica de elementos, com fábricas irmãs para texto, comentários e fragmentos.

Como mover uma subárvore entre dois documentos?

Use Document.import_node() para copiar ou adopt_node() para transferir, então anexe com append_child().

Existe um observador API para alterações de árvore?

Sim — MutationObserver entrega lotes MutationRecord descrevendo alterações estruturais e de atributos.


API Reference Resumo

Classe/MétodoDescrição
Document.create_elementCriar um nó de elemento
Document.get_element_by_idLocalizar um elemento por id
Element.set_attributeDefina um atributo de marcação
Node.insert_beforeInserir um nó antes de um filho de referência
Node.clone_nodeCopiar um nó ou subárvore
MutationObserverObservar mutações da árvore
TreeWalkerTravessia filtrada em ordem de documento

Ver também

 Português