Model Objek Dokumen (DOM) XML

Kelas Model Objek Dokumen XML (DOM) adalah representasi dalam memori dari dokumen XML. DOM memungkinkan Anda membaca, memanipulasi, dan memodifikasi dokumen XML secara terprogram. Kelas XmlReader juga membaca XML; namun, kelas ini menyediakan akses baca-saja yang tidak di-cache dan teruskan-saja. Ini berarti bahwa tidak ada kemampuan untuk mengedit nilai atribut atau konten elemen, atau kemampuan untuk menyisipkan dan menghapus node dengan XmlReader. Fungsi utama DOM adalah pengeditan. Data XML diwakili dalam memori merupakan cara yang umum digunakan dan terstruktur, meskipun data XML aktual disimpan secara linier saat berada dalam file atau masuk dari objek lain. Data berikut adalah data XML.

Input

<?xml version="1.0"?>
  <books>
    <book>
        <author>Carson</author>
        <price format="dollar">31.95</price>
        <pubdate>05/01/2001</pubdate>
    </book>
    <pubinfo>
        <publisher>MSPress</publisher>
        <state>WA</state>
    </pubinfo>
  </books>

Ilustrasi berikut menunjukkan bagaimana memori disusun saat data XML ini dibaca ke dalam struktur DOM.

XML document structure Struktur dokumen XML

Dalam struktur dokumen XML, setiap lingkaran dalam ilustrasi ini mewakili node, yang disebut objek XmlNode. Objek XmlNode adalah objek dasar di pohon DOM. Kelas XmlDocument, yang memperluas XmlNode, mendukung metode untuk melakukan operasi pada dokumen secara keseluruhan (misalnya, memuatnya ke dalam memori atau menyimpan XML ke file. Selain itu, XmlDocument menyediakan sarana untuk melihat dan memanipulasi node di seluruh dokumen XML. Baik XmlNode maupun XmlDocument memiliki peningkatan performa dan kegunaan serta memiliki metode dan properti untuk:

  • Akses dan ubah node khusus untuk DOM, seperti node elemen, node referensi entitas, dan sebagainya.

  • Ambil seluruh node, selain informasi yang ada di dalam node, seperti teks dalam node elemen.

    Catatan

    Jika aplikasi tidak memerlukan kemampuan struktur atau pengeditan yang disediakan oleh DOM, kelas XmlReader dan XmlWriter menyediakan akses aliran non-cache dan teruskan-saja ke XML. Untuk informasi lebih lanjut, lihat XmlReader dan XmlWriter.

Objek Node memiliki sekumpulan metode dan properti, serta karakteristik dasar dan terdefinisi dengan baik. Beberapa karakteristik ini antara lain:

  • Node memiliki node induk tunggal, yaitu node yang berada tepat di atasnya. Satu-satunya node yang tidak memiliki induk adalah akar Dokumen, karena merupakan node tingkat atas dan berisi dokumen itu sendiri dan fragmen dokumen.

  • Sebagian besar node dapat memiliki beberapa node anak, yang merupakan node tepat di bawahnya. Berikut ini adalah daftar jenis node yang dapat memiliki node anak.

    • Dokumen

    • DocumentFragment

    • EntityReference

    • Elemen

    • Atribut

    Node XmlDeclaration, Notasi, Entitas, CDATASection, Teks, Komentar, ProcessingInstruction, dan DocumentType tidak memiliki node anak.

  • Node yang berada pada tingkat yang sama, yang diwakili dalam diagram oleh node buku dan pubinfo, adalah saudara.

Salah satu karakteristik DOM adalah caranya menangani atribut. Atribut bukanlah node yang merupakan bagian dari hubungan induk, turunan, dan saudara. Atribut dianggap sebagai properti dari node elemen dan terdiri dari nama dan pasangan nilai. Misalnya, jika Anda memiliki data XML yang terdiri dari format="dollar" yang terkait dengan elemen price, kata format adalah nama, dan nilai atribut format adalah dollar. Untuk mengambil atribut format="dollar" node harga, Anda memanggil metode GetAttribute saat kursor terletak di node elemen price. Untuk informasi selengkapnya, lihat Mengakses Atribut di DOM.

Saat XML dibaca ke dalam memori, node dibuat. Namun, tidak semua node memiliki jenis yang sama. Elemen dalam XML memiliki aturan dan sintaks yang berbeda dari instruksi pemrosesan. Oleh karena itu, karena berbagai data dibaca, jenis node ditetapkan ke setiap node. Jenis node ini menentukan karakteristik dan fungsionalitas node.

Untuk informasi selengkapnya tentang jenis node yang dihasilkan dalam memori, lihat Jenis Node XML. Untuk informasi selengkapnya tentang objek yang dibuat di pohon node, lihat Memetakan Hierarki Objek ke Data XML.

Microsoft telah memperluas API yang tersedia di World Wide Web Consortium (W3C) DOM Level 1 dan Level 2 untuk mempermudah bekerja dengan dokumen XML. Meski sepenuhnya mendukung standar W3C, kelas, metode, dan properti tambahan menambahkan fungsionalitas di luar apa yang dapat dilakukan menggunakan W3C XML DOM. Kelas baru memungkinkan Anda mengakses data relasional, memberi Anda metode untuk menyinkronkan dengan data ADO.NET, sembari mengekspos data sebagai XML. Untuk informasi selengkapnya, lihat Menyinkronkan Himpunan Data dengan XmlDataDocument.

DOM paling berguna untuk membaca data XML ke dalam memori untuk mengubah strukturnya, untuk menambahkan atau menghapus node, atau untuk memodifikasi data yang disimpan oleh node seperti dalam teks yang dimuat oleh elemen. Namun, kelas lain tersedia yang lebih cepat daripada DOM dalam skenario lain. Untuk akses aliran yang cepat, tidak di-cache, dan teruskan-saja ke XML, gunakan XmlReader dan XmlWriter. Jika Anda memerlukan akses acak dengan model kursor dan JalurX, gunakan kelas NavigatorJalurX.

Lihat juga