Bekerja dengan DOM
Bekerja dengan DOM
Lapisan DOM memodelkan halaman HTML sebagai pohon node bertipe. Document adalah titik masuk dan pabrik node; Element dan Node menangani manipulasi dan penelusuran API.
Membuat Node
Document.create_element(), create_text_node(), create_comment(), dan create_document_fragment() menghasilkan node; append_child() melampirkannya:
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(), dan remove_attribute() mengelola atribut markup; Attr dan NamedNodeMap memperlihatkannya sebagai objek:
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)Operasi Pohon
Node menyediakan toolkit struktural: insert_before(), remove_child(), replace_child(), clone_node(), dan contains(), serta child_nodes, parent_node, dan first_child accessors dan text_content untuk teks subtree. get_root_node() dan has_child_nodes() menjawab pertanyaan struktural secara langsung.
Pencarian dan Penelusuran
Document.get_element_by_id() mengambil elemen berdasarkan id. NodeList dan HTMLCollection menyimpan set hasil; NodeIterator dan TreeWalker (dengan NodeFilter) menelusuri subpohon dalam urutan dokumen.
Mengamati Mutasi
MutationObserver mencatat perubahan pohon sebagai entri MutationRecord, mencerminkan observer pattern standar untuk merespons edit struktural.
Tips dan Praktik Terbaik
- Buat setiap node melalui
Documentyang memiliki — node berskala dokumen; gunakanDocument.import_node()atauadopt_node()untuk memindahkannya antar dokumen - Lebih baik gunakan
text_contentuntuk teks seluruh-subpohon daripada mengatur nodeTextsecara manual - Gunakan
DocumentFragmentuntuk menyusun batch node sebelum satuappend_child() - Periksa
has_attribute()sebelumget_attribute()ketika atribut yang hilang bermakna
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Node muncul di dokumen yang salah | Node dibuat oleh Document yang berbeda | Pindahkan dengan import_node() atau adopt_node() terlebih dahulu |
| Pencarian atribut tidak mengembalikan apa pun | Atribut tidak pernah disetel pada elemen | Penjaga dengan has_attribute() |
| Teks subtree kosong | Membaca text_content sebelum anak dilampirkan | Lampirkan anak, kemudian baca |
FAQ
Kelas mana yang membuat elemen baru?
Document — metode create_element()-nya adalah pabrik untuk elemen, dengan pabrik saudara untuk teks, komentar, dan fragmen.
Bagaimana cara memindahkan subtree antara dua dokumen?
Gunakan Document.import_node() untuk menyalin atau adopt_node() untuk mentransfer, lalu lampirkan dengan append_child().
Apakah ada observer API untuk perubahan pohon?
Ya — MutationObserver menyediakan batch MutationRecord yang menggambarkan perubahan struktural dan atribut.
Ringkasan API Reference
| Kelas/Metode | Deskripsi |
|---|---|
Document.create_element | Buat node elemen |
Document.get_element_by_id | Cari elemen berdasarkan id |
Element.set_attribute | Atur atribut markup |
Node.insert_before | Sisipkan node sebelum anak referensi |
Node.clone_node | Salin node atau subtree |
MutationObserver | Amati mutasi pohon |
TreeWalker | Penelusuran urutan dokumen yang difilter |