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ändDocument.import_node()elleradopt_node()för att flytta dem mellan dokument - Föredra
text_contentför hela delträdets text framför manuellTextnodhantering - Använd
DocumentFragmentför att samla ihop satser av noder innan en endaappend_child() - Kontrollera
has_attribute()föreget_attribute()när ett saknat attribut är meningsfullt
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
| Nod visas i fel dokument | Nod skapad av en annan Document | Flytta den med import_node() eller adopt_node() först |
| Attributhämtning returnerar inget | Attributet har aldrig satts på elementet | Skydda med has_attribute() |
| Undertretexten är tom | Läser text_content innan barn är bifogade | Bifoga 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/Metod | Beskrivning |
|---|---|
Document.create_element | Skapa en elementnod |
Document.get_element_by_id | Sök upp ett element med id |
Element.set_attribute | Ställ in ett markup-attribut |
Node.insert_before | Infoga en nod före ett referensbarn |
Node.clone_node | Kopiera en nod eller ett underträd |
MutationObserver | Observera trädmutationer |
TreeWalker | Filtrerad dokumentordningstraversering |