Trabajando con el DOM

Trabajando con el DOM

La capa DOM modela una página HTML como un árbol de nodos tipados. Document es el punto de entrada y fábrica de nodos; Element y Node realizan la manipulación y el recorrido API.


Creando nodos

Document.create_element(), create_text_node(), create_comment() y create_document_fragment() generan nodos; append_child() los adjunta:

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() y remove_attribute() gestionan los atributos de marcado; Attr y NamedNodeMap los exponen 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)

Operaciones del árbol

Node suministra el conjunto de herramientas estructurales: insert_before(), remove_child(), replace_child(), clone_node() y contains(), más los accesores child_nodes, parent_node y first_child y text_content para texto de subárbol. get_root_node() y has_child_nodes() responden preguntas estructurales directamente.

Búsqueda y recorrido

Document.get_element_by_id() recupera elementos por id. NodeList y HTMLCollection mantienen conjuntos de resultados; NodeIterator y TreeWalker (con NodeFilter) recorren subárboles en orden de documento.

Observando mutaciones

MutationObserver registra los cambios del árbol como entradas MutationRecord, replicando el patrón de observador estándar para reaccionar a ediciones estructurales.


Consejos y buenas prácticas

  • Crea cada nodo a través del Document propietario — los nodos están limitados al documento; usa Document.import_node() o adopt_node() para moverlos entre documentos
  • Prefiere text_content para texto de subárbol completo en lugar de manipular manualmente nodos Text
  • Utilice DocumentFragment para ensamblar lotes de nodos antes de un único append_child()
  • Verifique has_attribute() antes de get_attribute() cuando un atributo faltante sea significativo

Problemas comunes

ProblemaCausaCorrección
El nodo aparece en el documento incorrectoNodo creado por un Document diferenteMóvelo con import_node() o adopt_node() primero
La búsqueda de atributo no devuelve nadaEl atributo nunca se estableció en el elementoProteger con has_attribute()
El texto del subárbol está vacíoLeyendo text_content antes de adjuntar los hijosAdjuntar hijos, luego leer

FAQ

¿Qué clase crea nuevos elementos?

Document — su método create_element() es la fábrica de elementos, con fábricas hermanas para texto, comentarios y fragmentos.

¿Cómo puedo mover un subárbol entre dos documentos?

Utilice Document.import_node() para copiar o adopt_node() para transferir, y luego adjunte con append_child().

¿Existe un observador API para los cambios de árbol?

Sí — MutationObserver entrega lotes MutationRecord que describen cambios estructurales y de atributos.


API Reference Resumen

Clase/MétodoDescripción
Document.create_elementCrear un nodo de elemento
Document.get_element_by_idBuscar un elemento por id
Element.set_attributeEstablezca un atributo de marcado
Node.insert_beforeInsertar un nodo antes de un hijo de referencia
Node.clone_nodeCopiar un nodo o subárbol
MutationObserverObservar mutaciones del árbol
TreeWalkerRecorrido de orden de documento filtrado

Ver también

 Español