JavaRush /Java Blog /Random-ID /Dasar-dasar XML untuk Pemrogram Java - Bagian 1 dari 3
Ярослав
Level 40
Днепр

Dasar-dasar XML untuk Pemrogram Java - Bagian 1 dari 3

Dipublikasikan di grup Random-ID
XML adalah format yang sangat populer dan fleksibel saat ini. Setiap programmer harus memahaminya, itu wajib dimiliki. Banyak teknologi saat ini yang secara aktif menggunakannya, dan teknologi modern termasuk di antaranya.
Dasar-dasar XML untuk Pemrogram Java - Bagian 1 dari 3 - 1

Perkenalan

Halo, para pembaca artikel saya yang budiman. Saya ingin segera mengatakan bahwa ini hanyalah artikel pertama dari rangkaian tiga artikel saya. Tujuan utama dari keseluruhan seri ini adalah untuk menginisiasi setiap pembaca ke dalam XML dan memberikan, jika bukan penjelasan dan pemahaman yang lengkap, setidaknya dorongan yang baik ke arah itu, menjelaskan poin-poin utama dan hal-hal lainnya. Seluruh siklus akan diperuntukkan bagi satu nominasi - “Perhatian terhadap detail” , dan pembagian menjadi 3 artikel dibuat agar sesuai dengan batas karakter dalam postingan dan membagi materi dalam jumlah besar menjadi porsi yang lebih kecil untuk pemahaman yang lebih baik. Artikel pertama akan membahas tentang XML itu sendiri dan apa itu, serta salah satu cara membuat skema untuk file XML - DTD. Pertama-tama saya ingin membuat sedikit kata pengantar bagi yang belum familiar dengan XML: tidak perlu takut. XML tidak terlalu rumit dan harus dipahami oleh programmer mana pun, karena XML merupakan format file yang sangat fleksibel, efisien dan populer saat ini untuk menyimpan berbagai informasi yang Anda inginkan. XML digunakan di Ant, Maven, Spring. Setiap programmer membutuhkan pengetahuan tentang XML. Sekarang setelah Anda mengumpulkan kekuatan dan motivasi, mari kita mulai belajar. Saya akan mencoba memaparkan semua materi sesederhana mungkin, hanya mengumpulkan yang paling penting dan tidak menyia-nyiakannya.

XML

Untuk penjelasan yang lebih jelas, akan lebih baik untuk memvisualisasikan XML dengan sebuah contoh.
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee>
                    <name>Maksim</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Ivan</name>
                    <job>Junior Software Developer</job>
                </employee>
                <employee>
                    <name>Franklin</name>
                    <job>Junior Software Developer</job>
                </employee>
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee>
                    <name>Herald</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Adam</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Leroy</name>
                    <job>Junior Software Developer</job>
                </employee>
            </employees>
        </office>
    </offices>
</company>
HTML dan XML memiliki sintaksis yang serupa karena keduanya memiliki induk yang sama - SGML. Namun, dalam HTML hanya ada tag tetap dengan standar tertentu, sedangkan dalam XML Anda dapat membuat tag, atribut, dan, secara umum, melakukan apa pun yang Anda inginkan untuk menyimpan data sesuai keinginan Anda. Faktanya, file XML dapat dibaca oleh siapa saja yang menguasai bahasa Inggris. Contoh ini dapat digambarkan dengan menggunakan pohon. Dasar-dasar XML untuk Pemrogram Java - Bagian 1 dari 3 - 2Akar pohonnya adalah Perusahaan. Itu juga merupakan elemen akar (root) dari mana semua elemen lainnya berasal. Setiap file XML hanya dapat memiliki satu elemen root. Itu harus dideklarasikan setelah deklarasi file xml (baris pertama dalam contoh) dan berisi semua elemen lainnya. Sedikit tentang deklarasi: wajib dan diperlukan untuk mengidentifikasi dokumen sebagai XML. Ini memiliki tiga atribut semu (atribut khusus yang telah ditentukan sebelumnya): versi (sesuai dengan standar 1.0), pengkodean (pengkodean) dan mandiri (otonomi: jika ya dan skema eksternal terhubung ke dokumen, maka akan ada kesalahan, default Tidak). Elemen adalah entitas yang menyimpan data menggunakan elemen dan atribut lain. Atribut adalah informasi tambahan tentang suatu elemen yang ditentukan saat menambahkan suatu elemen. Jika penjelasannya kita terjemahkan ke dalam field OOP, kita dapat memberikan contoh berikut: kita mempunyai sebuah mobil, setiap mobil mempunyai ciri-ciri (warna, kapasitas, merk, dll) - ini adalah atribut, dan ada entitas yang ada di dalam mobil tersebut. : pintu, jendela, mesin, roda kemudi adalah elemen lainnya. Anda dapat menyimpan properti baik sebagai elemen individual atau sebagai atribut, bergantung pada keinginan Anda. Bagaimanapun, XML adalah format yang sangat fleksibel untuk menyimpan informasi tentang apa pun. Setelah penjelasannya, kita tinggal melihat contoh di atas agar semuanya berjalan pada tempatnya. Pada contoh tersebut, kami menggambarkan struktur perusahaan yang sederhana: ada sebuah perusahaan yang memiliki nama dan kantor, dan di kantor tersebut terdapat karyawan. Elemen Karyawan dan Kantor adalah elemen pembungkus - elemen tersebut berfungsi untuk mengumpulkan elemen dengan tipe yang sama, pada dasarnya menggabungkannya menjadi satu set untuk kemudahan pemrosesan. Lantai dan ruangan patut mendapat perhatian khusus. Inilah ciri-ciri kantor (lantai dan nomor), dengan kata lain sifat-sifatnya. Jika kita memiliki elemen “gambar”, maka kita dapat mentransfer dimensinya. Anda mungkin memperhatikan bahwa perusahaan tidak memiliki atribut nama, namun memiliki elemen nama. Anda cukup mendeskripsikan struktur sesuai keinginan Anda. Tidak ada yang mewajibkan Anda untuk menulis semua properti elemen hanya dalam atribut; Anda dapat menggunakan elemen saja dan menulis beberapa data di dalamnya. Misalnya, kita dapat mencatat nama dan posisi karyawan kita sebagai atribut:
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="Maksim" job="Middle Software Developer">

                </employee>
                <employee name="Ivan" job="Junior Software Developer">

                </employee>
                <employee name="Franklin" job="Junior Software Developer">

                </employee>
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer">

                </employee>
                <employee name="Adam" job="Middle Software Developer">

                </employee>
                <employee name="Leroy" job="Junior Software Developer">

                </employee>
            </employees>
        </office>
    </offices>
</company>
Seperti yang Anda lihat, kini nama dan jabatan setiap karyawan menjadi atributnya. Dan Anda dapat melihat bahwa tidak ada apa pun di dalam entitas karyawan (tag), semua elemen karyawan kosong. Kemudian Anda dapat menjadikan karyawan sebagai elemen kosong - segera menutupnya setelah mendeklarasikan atribut. Ini dilakukan cukup sederhana, cukup tambahkan garis miring:
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="Maksim" job="Middle Software Developer" />
                <employee name="Ivan" job="Junior Software Developer" />
                <employee name="Franklin" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>
Seperti yang Anda lihat, dengan menutup elemen kosong, kami menjaga seluruh integritas informasi dan mempersingkat catatan, menjadikan informasi lebih ringkas dan mudah dibaca. Untuk menambahkan komentar (teks yang akan dilewati saat mengurai file) di XML, terdapat sintaks berikut:
<!-- Ivan недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка.-->
Dan konstruksi terakhir adalah CDATA yang artinya “data karakter”. Berkat desain ini, dimungkinkan untuk menulis teks yang tidak akan ditafsirkan sebagai markup XML. Ini berguna jika Anda memiliki entitas di dalam file XML yang menyimpan markup XML dalam informasinya. Contoh:
<?xml version="1.0" encoding="UTF-8" ?>
<bean>
    <information>
        <![CDATA[<name>Ivan</name><age>26</age>]]>
    </information>
</bean>
Hal yang menarik tentang XML adalah Anda dapat memperluasnya sesuka Anda: menggunakan elemen Anda sendiri, atribut Anda sendiri, dan menyusunnya sesuai keinginan. Anda dapat menggunakan atribut dan elemen untuk menyimpan data (seperti yang ditunjukkan pada contoh sebelumnya). Namun, Anda perlu memahami bahwa Anda dapat membuat elemen dan atribut Anda sendiri dengan cepat dan sesuka Anda, tetapi bagaimana jika Anda mengerjakan proyek di mana pemrogram lain ingin memindahkan elemen nama menjadi atribut, dan seluruh logika program Anda ditulis agar nama itu menjadi sebuah elemen? Bagaimana Anda bisa membuat aturan sendiri tentang elemen apa yang seharusnya, atribut apa yang dimilikinya, dan hal-hal lain, sehingga Anda dapat memvalidasi file XML dan memastikan bahwa aturan tersebut akan menjadi standar dalam proyek Anda dan tidak ada yang akan melanggarnya? Untuk menulis semua aturan markup XML Anda sendiri, ada alat khusus. Yang paling terkenal: Skema DTD dan XML. Artikel ini hanya akan membahas yang pertama.

DTD

DTD dibuat untuk mendeskripsikan jenis dokumen. DTD sudah menjadi usang dan sekarang secara aktif ditinggalkan dalam XML, namun masih banyak file XML yang menggunakan DTD dan, secara umum, berguna untuk dipahami. DTD adalah teknologi untuk memvalidasi dokumen XML . DTD mendeklarasikan aturan khusus untuk suatu jenis dokumen: elemennya, elemen apa yang ada di dalam elemen, atribut, diperlukan atau tidak, jumlah pengulangannya, serta Entitas. Mirip dengan XML, DTD dapat divisualisasikan dengan contoh untuk penjelasan yang lebih jelas.
<!-- Объявление возможных элементов -->
<!ELEMENT employee EMPTY>
<!ELEMENT employees (employee+)>
<!ELEMENT office (employees)>
<!ELEMENT offices (office+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (name, offices)>

<!-- Добавление атрибутов для элементов employee и office -->
<!ATTLIST employee
        name CDATA #REQUIRED
        job  CDATA #REQUIRED
>

<!ATTLIST office
        floor CDATA #REQUIRED
        room  CDATA #REQUIRED
>

<!-- Добавление сущностей -->
<!ENTITY M "Maksim">
<!ENTITY I "Ivan">
<!ENTITY F "Franklin">
Di sini kita punya contoh sederhana. Dalam contoh ini, kami mendeklarasikan seluruh hierarki dari contoh XML: karyawan, karyawan, kantor, kantor, nama, perusahaan. Untuk membuat file DTD, ada 3 konstruksi utama yang digunakan untuk mendeskripsikan file XML apa pun: ELEMENT (untuk mendeskripsikan elemen), ATTLIST (untuk mendeskripsikan atribut elemen) dan ENTITY (untuk mengganti teks dengan bentuk yang disingkat). ELEMEN Digunakan untuk mendeskripsikan suatu elemen. Elemen yang dapat digunakan dalam elemen yang dijelaskan dicantumkan dalam tanda kurung dalam bentuk daftar. Anda dapat menggunakan bilangan untuk menunjukkan kuantitas (mirip dengan bilangan dari ekspresi reguler): +berarti 1+ *berarti 0+ ?berarti 0ATAU 1 Jika tidak ada bilangan yang ditambahkan, maka diasumsikan hanya ada 1 elemen. Jika kita membutuhkan salah satu dari sekelompok elemen, kita dapat menulisnya seperti ini:
<!ELEMENT company ((name | offices))>
Kemudian dipilih salah satu unsurnya: nama atau jabatan, tetapi jika ada dua di dalam perusahaan, maka validasinya tidak lolos. Anda juga dapat memperhatikan bahwa di Employee ada kata EMPTY yang artinya elemen tersebut harus kosong. Ada juga APAPUN – elemen apa saja. #PCDATA – data teks. ATTLIST Digunakan untuk menambahkan atribut ke elemen. Setelah ATTLIST mengikuti nama elemen yang diinginkan, dan setelah itu kamus berbentuk "nama atribut - tipe atribut", dan pada akhirnya Anda dapat menambahkan #IMPLIED (opsional) atau #REQUIRED (wajib). CDATA – data teks. Ada tipe lain, tapi semuanya huruf kecil. ENTITY ENTITY digunakan untuk mendeklarasikan singkatan dan teks yang akan ditempatkan pada singkatan tersebut. Faktanya, kita hanya dapat menggunakan dalam XML, bukan teks lengkap, hanya nama entitas dengan tanda & sebelum dan ; setelah. Misalnya: untuk membedakan antara markup HTML dan karakter saja, tanda kurung sudut kiri sering kali di-escape dengan lt; , Anda hanya perlu meletakkan & sebelum lt. Maka kita tidak akan menggunakan markup, melainkan hanya simbol <. Seperti yang Anda lihat, semuanya cukup sederhana: Anda mendeklarasikan elemen, menjelaskan elemen apa yang mampu ditampung oleh elemen yang dideklarasikan, menambahkan atribut ke elemen ini dan, jika diinginkan, Anda dapat menambahkan entitas untuk mempersingkat beberapa entri. Dan di sini Anda harus bertanya: bagaimana cara menggunakan aturan kami di file XML kami? Bagaimanapun, kami hanya mendeklarasikan aturannya, tetapi kami tidak menggunakannya dalam XML. Ada dua cara untuk menggunakannya dalam XML: 1. Menyematkan - menulis aturan DTD di dalam file XML itu sendiri, cukup tulis elemen root setelah kata kunci DOCTYPE dan sertakan file DTD kita di dalam tanda kurung siku.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company [
        <!-- Объявление возможных элементов -->
        <!ELEMENT employee EMPTY>
        <!ELEMENT employees (employee+)>
        <!ELEMENT office (employees)>
        <!ELEMENT offices (office+)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT company (name, offices)>

        <!-- Добавление атрибутов для элементов employee и office -->
        <!ATTLIST employee
        name CDATA #REQUIRED
        job  CDATA #REQUIRED
        >

        <!ATTLIST office
        floor CDATA #REQUIRED
        room  CDATA #REQUIRED
        >

        <!-- Добавление сущностей -->
        <!ENTITY M "Maksim">
        <!ENTITY I "Ivan">
        <!ENTITY F "Franklin">
]>

<company>
    <name>IT-Heaven</name>
    <!-- Ivan недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка.-->
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="&M;" job="Middle Software Developer" />
                <employee name="&I;" job="Junior Software Developer" />
                <employee name="&F;" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>
2. Impor - kami menulis semua aturan kami dalam file DTD terpisah, setelah itu dalam file XML kami menggunakan konstruksi DOCTYPE dari metode pertama, hanya saja alih-alih tanda kurung siku Anda perlu menulis SISTEM dan menentukan jalur absolut atau relatif ke lokasi file saat ini.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company SYSTEM "dtd_example1.dtd">

<company>
    <name>IT-Heaven</name>
    <!-- Ivan недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка.-->
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="&M;" job="Middle Software Developer" />
                <employee name="&I;" job="Junior Software Developer" />
                <employee name="&F;" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>
Anda juga dapat menggunakan kata kunci PUBLIC alih-alih SYSTEM, tetapi kata kunci tersebut sepertinya tidak berguna bagi Anda. Jika Anda tertarik, Anda dapat membacanya (dan juga tentang SISTEM) secara detail di sini: link . Sekarang kita tidak bisa menggunakan elemen lain tanpa mendeklarasikannya di DTD, dan semua XML tunduk pada aturan kita. Anda dapat mencoba menulis kode ini di IntelliJ IDEA dalam file terpisah dengan ekstensi .xml dan mencoba menambahkan beberapa elemen baru atau menghapus elemen dari DTD kami dan perhatikan bagaimana IDE akan menunjukkan kesalahan kepada Anda. Namun, DTD memiliki kelemahan:
  • Ia memiliki sintaksnya sendiri, berbeda dari sintaks xml.
  • DTD tidak memiliki pemeriksaan tipe data dan hanya dapat berisi string.
  • Tidak ada namespace di DTD.
Tentang masalah sintaks Anda sendiri: Anda harus memahami dua sintaks sekaligus: sintaks XML dan DTD. Keduanya berbeda dan ini mungkin membuat Anda bingung. Selain itu, karena ini, lebih sulit untuk melacak kesalahan dalam file XML besar yang digabungkan dengan skema DTD yang sama. Jika ada sesuatu yang tidak berhasil untuk Anda, Anda harus memeriksa sejumlah besar teks dengan sintaksis berbeda. Ini seperti membaca dua buku sekaligus: dalam bahasa Rusia dan Inggris. Dan jika pengetahuan Anda tentang satu bahasa lebih buruk, maka memahami teksnya juga akan sama sulitnya. Tentang masalah pemeriksaan tipe data: atribut dalam DTD memang memiliki tipe yang berbeda, namun semuanya, pada intinya, merupakan representasi string dari sesuatu, daftar, atau tautan. Namun, Anda tidak bisa hanya menuntut angka, apalagi angka positif atau negatif. Dan Anda benar-benar bisa melupakan tipe objek. Masalah terakhir akan dibahas pada artikel selanjutnya yang akan membahas tentang namespace dan skema XML, karena tidak ada gunanya membahasnya di sini. Terima kasih atas perhatiannya, saya telah melakukan banyak pekerjaan dan terus melakukannya untuk menyelesaikan seluruh rangkaian artikel tepat waktu. Pada dasarnya, saya hanya perlu memahami skema XML dan memberikan penjelasannya dengan kata-kata yang lebih jelas untuk menyelesaikan artikel ke-2. Setengahnya sudah selesai, jadi Anda bisa mengharapkannya segera. Artikel terakhir akan sepenuhnya dikhususkan untuk bekerja dengan file XML menggunakan Java. Semoga sukses untuk semuanya dan sukses dalam pemrograman :) Artikel selanjutnya: [Kompetisi] Dasar-Dasar XML untuk Pemrogram Java - Bagian ke-2 dari 3
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION