Arbeta med DOM

Arbeta med DOM

DOM-lagret modellerar en HTML sida som ett träd av typade noder. Document är ingångspunkten och nodfabriken; Element och Node utför manipulationen och traverseringen API.


Skapa noder

Document.create_element(), create_text_node(), create_comment() och create_document_fragment() producerar noder; append_child() fäster dem:

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() och remove_attribute() hanterar markup-attribut; Attr och NamedNodeMap exponerar dem som objekt:

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)

Trädoperationer

Node tillhandahåller den strukturella verktygslådan: insert_before(), remove_child(), replace_child(), clone_node() och contains(), samt child_nodes, parent_node och first_child åtkomstfunktioner och text_content för delträdstext. get_root_node() och has_child_nodes() svarar på strukturella frågor direkt.

Uppslagning och traversering

Document.get_element_by_id() hämtar element efter id. NodeList och HTMLCollection innehåller resultatuppsättningar; NodeIterator och TreeWalker (med NodeFilter) går igenom delträd i dokumentordning.

Observera mutationer

MutationObserver registrerar trädändringar som MutationRecord-poster, och speglar det vanliga observeringsmönstret för att reagera på strukturella redigeringar.


Tips och bästa praxis

  • Skapa varje nod via den ägande Document — noder är dokumentomfattande; använd Document.import_node() eller adopt_node() för att flytta dem mellan dokument
  • Föredra text_content för hela delträdets text framför manuell Text nodhantering
  • Använd DocumentFragment för att samla ihop satser av noder innan en enda append_child()
  • Kontrollera has_attribute() före get_attribute() när ett saknat attribut är meningsfullt

Vanliga problem

ProblemOrsakÅtgärd
Nod visas i fel dokumentNod skapad av en annan DocumentFlytta den med import_node() eller adopt_node() först
Attributhämtning returnerar ingetAttributet har aldrig satts på elementetSkydda med has_attribute()
Undertretexten är tomLäser text_content innan barn är bifogadeBifoga barn, sedan läs

FAQ

Vilken klass skapar nya element?

Document — dess create_element()-metod är fabriken för element, med syskonfabriker för text, kommentarer och fragment.

Hur flyttar jag ett underträd mellan två dokument?

Använd Document.import_node() för att kopiera eller adopt_node() för att överföra, och fäst sedan med append_child().

Finns det en observatör API för trädändringar?

Ja — MutationObserver levererar MutationRecord batcher som beskriver strukturella och attributändringar.


API Reference Sammanfattning

Klass/MetodBeskrivning
Document.create_elementSkapa en elementnod
Document.get_element_by_idSök upp ett element med id
Element.set_attributeStäll in ett markup-attribut
Node.insert_beforeInfoga en nod före ett referensbarn
Node.clone_nodeKopiera en nod eller ett underträd
MutationObserverObservera trädmutationer
TreeWalkerFiltrerad dokumentordningstraversering

Se även

 Svenska