CodeGym/Java Blog/Acak/XML di Jawa
John Squirrels
Level 41
San Francisco

XML di Jawa

Dipublikasikan di grup Acak
anggota
Hai! Hari ini kami akan memperkenalkan format data lain yang disebut XML. Ini adalah topik yang sangat penting. Saat mengerjakan aplikasi Java nyata, Anda hampir pasti akan menemukan tugas terkait XML. Dalam pengembangan Java, format ini digunakan hampir secara universal (kami akan mencari tahu alasannya di bawah), jadi saya menyarankan Anda untuk tidak meninjau pelajaran ini secara dangkal, tetapi mendapatkan pemahaman menyeluruh tentang semuanya dan juga mempelajari literatur/tautan tambahan :) Ini pasti tidak akan membuang-buang waktu. Jadi, mari kita mulai dengan hal yang mudah: "apa" dan "mengapa"!

Apa itu Java XML?

XML adalah singkatan dari Extensible Markup Language. Anda mungkin sudah tidak asing lagi dengan bahasa markup — pernahkah Anda mendengar tentang HTML, yang digunakan untuk membuat halaman web :) Apa itu XML?  - 1HTML dan XML bahkan memiliki tampilan yang mirip:
HTML 1
<h1>title</h1>
<p>paragraph</p>
<p>paragraph</p>
XML 1
<headline>title</headline>
<paragraph>paragraph<paragraph>
<paragraph>paragraph<paragraph>
HTML 2
<h1>title</h1>
<p>paragraph</p>
<p>paragraph</p>
XML 2
<chief>title</chief>
<paragraph>paragraph<paragraph>
<paragraph>paragraph<paragraph>
Dengan kata lain, XML adalah bahasa untuk mendeskripsikan data.

Mengapa Anda membutuhkan XML?

XML awalnya diciptakan untuk menyimpan dan mengirim data dengan lebih nyaman, termasuk melalui Internet. Ini memiliki beberapa keunggulan yang membantu Anda mencapai ini. Pertama, mudah dibaca oleh manusia dan komputer. Saya pikir Anda dapat dengan mudah memahami apa yang dijelaskan oleh file XML ini:
<?xml version="1.0" encoding="UTF-8"?>
<book>
   <title>Harry Potter and the Philosopher’s Stone</title>
   <author>J. K. Rowling</author>
   <year>1997</year>
</book>
Komputer juga dengan mudah memahami format ini. Kedua, karena data disimpan sebagai teks biasa, tidak akan ada masalah kompatibilitas saat kami mentransfernya dari satu komputer ke komputer lain. Penting untuk dipahami bahwa XML bukanlah kode yang dapat dieksekusi — ini adalah bahasa deskripsi data. Setelah Anda mendeskripsikan data menggunakan XML, Anda perlu menulis kode (misalnya, di Java) yang dapat mengirim/menerima/memproses data ini.

Bagaimana struktur XML?

Komponen utamanya adalah tag: ini adalah hal-hal dalam kurung sudut:
<book>
</book>
Ada tag pembuka dan tag penutup. Tag penutup memiliki simbol tambahan (" / "), seperti yang terlihat pada contoh di atas. Setiap tag pembuka harus memiliki tag penutup. Mereka menunjukkan di mana deskripsi setiap elemen dalam file dimulai dan berakhir. Tag dapat bersarang! Dalam contoh buku kita, tag <book> memiliki 3 tag bersarang: <title>, <author>, dan <year>. Ini tidak terbatas pada satu tingkat penyatuan: tag bersarang dapat memiliki tag bersarangnya sendiri, dll. Struktur ini disebut pohon tag. Mari kita lihat pohon ini menggunakan contoh file XML yang mendeskripsikan sebuah dealer mobil:
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">20000.00</price>
   </car>
   <car category="sport">
       <title lang="en">Ferrari 360 Spider</title>
       <year>2018</year>
       <price currency="US dollar">150000.00</price>
   </car>
</carstore>
Di sini kami memiliki tag tingkat atas: <carstore>. Ini juga disebut elemen root. <carstore> memiliki satu tag turunan: <car>. <car>, pada gilirannya, juga memiliki 3 tag anak: <model>, <tahun> dan <harga>. Setiap tag dapat memiliki atribut yang berisi informasi penting tambahan. Dalam contoh kita, tag <model> memiliki atribut "lang", yang menunjukkan bahasa yang digunakan untuk merekam nama model:
<model lang="en">Scania R 770</model>
Di sini kami menunjukkan bahwa nama tersebut ditulis dalam bahasa Inggris. Tag <price> kami memiliki atribut "currency".
<price currency="US dollar">150000.00</price>
Di sini kami menunjukkan bahwa harga mobil diberikan dalam dolar AS. Dengan demikian, XML memiliki sintaks "yang menjelaskan sendiri". Anda dapat menambahkan informasi apa pun yang Anda perlukan untuk mendeskripsikan data. Selain itu, di bagian atas file, Anda dapat menambahkan baris yang menunjukkan versi XML dan pengkodean yang digunakan untuk menulis data. Ini disebut "prolog" dan tampilannya seperti ini:
<?xml version="1.0" encoding="UTF-8"?>
Kami menggunakan pengkodean XML versi 1.0 dan UTF-8. Ini tidak diperlukan, tetapi dapat berguna jika, misalnya, file Anda menggunakan teks dalam berbagai bahasa. Kami menyebutkan bahwa XML berarti "Bahasa Markup eXtensible", tetapi apa artinya "dapat diperluas"? Ini berarti sempurna untuk membuat versi baru dari objek dan file Anda. Misalnya, kita juga ingin mulai menjual sepeda motor di dealer mobil kita! Karena itu, kami membutuhkan program kami untuk mendukung kedua versi <carstore>: yang lama (tanpa sepeda motor) dan yang baru. Ini versi lama kami:
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">20000.00</price>
   </car>
   <car category="sport">
       <title lang="en">Ferrari 360 Spider</title>
       <year>2018</year>
       <price currency="US dollar">150000.00</price>
   </car>
</carstore>
Dan inilah yang baru diperluas:
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">20000.00</price>
   </car>
   <car category="sport">
       <title lang="en">Ferrari 360 Spider</title>
       <year>2018</year>
       <price currency="US dollar">150000.00</price>
   </car>
   <motorcycle>
       <title lang="en">Yamaha YZF-R6</title>
       <year>2018</year>
       <price currency="Russian Ruble">1000000.00</price>
       <owner>Vasia</owner>
   </motorcycle>
   <motorcycle>
       <title lang="en">Harley Davidson Sportster 1200</title>
       <year>2011</year>
       <price currency="Euro">15000.00</price>
       <owner>Petia</owner>
   </motorcycle>
</carstore>
Begitulah mudah dan sederhananya menambahkan deskripsi sepeda motor ke file kami :) Terlebih lagi, kami sama sekali tidak perlu memiliki tag anak yang sama untuk sepeda motor seperti untuk mobil. Harap diperhatikan bahwa sepeda motor, tidak seperti mobil, memiliki elemen <pemilik>. Ini tidak menghalangi komputer (atau manusia) untuk membaca data.

Perbedaan antara XML dan HTML

Kami telah mengatakan bahwa tampilan XML dan HTML sangat mirip. Itu membuatnya sangat penting untuk mengetahui bagaimana mereka berbeda. Pertama, mereka digunakan untuk tujuan yang berbeda. HTML adalah untuk menandai halaman web. Misalnya, saat membuat situs web, Anda dapat menggunakan HTML untuk menentukan: "Menu harus ada di pojok kanan atas. Harus ada tombol ini dan itu". Dengan kata lain, tugas HTML adalah menampilkan data. XML adalah untuk menyimpan dan mengirim informasi dalam bentuk yang nyaman bagi manusia dan komputer. Format ini tidak mengandung indikasi bagaimana data ini harus ditampilkan: itu tergantung pada kode program yang membacanya. Kedua, ada perbedaan teknis yang besar. Tag HTML sudah ditentukan sebelumnya. Dengan kata lain, membuat header HTML (misalnya, keterangan besar di bagian atas halaman) hanya menggunakan <h1></h1> tag (<h2></h2> dan <h3></h3> digunakan untuk header yang lebih kecil). Anda tidak dapat membuat header HTML menggunakan tag lain. XML tidak menggunakan tag yang telah ditentukan sebelumnya. Anda dapat memberi tag nama apa pun yang Anda inginkan: <header>, <title>, <idontknow2121>.

Resolusi konflik

Kebebasan yang disediakan XML dapat menyebabkan beberapa masalah. Misalnya, entitas yang sama (misalnya, mobil) dapat digunakan oleh suatu program untuk tujuan yang berbeda. Misalnya, kami memiliki file XML yang mendeskripsikan mobil. Namun, pemrogram kami tidak mencapai kesepakatan sebelumnya di antara mereka sendiri. Dan sekarang, selain data tentang mobil sungguhan, kami mungkin menemukan data tentang mobil mainan di XML kami! Apalagi mereka memiliki atribut yang sama. Katakanlah program kita membaca dalam file XML seperti itu. Bagaimana kita membedakan mobil asli dari mobil mainan?
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">100.00</price>
   </car>
</carstore>
Di sini prefiks dan namespace akan membantu kita. Untuk membedakan mobil mainan dari yang asli dalam program kami (dan memang mainan apa pun dari mainan aslinya), kami memperkenalkan dua awalan: "nyata" dan "mainan".
<real:car category="truck">
   <model lang="en">Scania R 770</model>
   <year>2005</year>
   <price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
   <title lang="en">Ford Focus</title>
   <year>2012</year>
   <price currency="US dollar">100.00</price>
</toy:car>
Sekarang program kita akan dapat membedakan entitas yang berbeda! Segala sesuatu yang memiliki awalan mainan akan diperlakukan sebagai mainan :) Namun, kita belum selesai. Untuk menggunakan prefiks, kita perlu mendaftarkan masing-masing prefiks sebagai namespace. Sebenarnya, "daftar" adalah kata yang kuat :) Kita hanya perlu membuat nama yang unik untuk masing-masingnya. Ini seperti kelas: kelas memiliki nama pendek ( Cat ) dan nama yang memenuhi syarat yang mencakup semua paket ( zoo.animals.Cat). URI biasanya digunakan untuk membuat nama namespace yang unik. Terkadang ini dilakukan dengan menggunakan alamat Internet, yang menjelaskan fungsi namespace ini. Tapi itu tidak harus menjadi alamat Internet yang valid. Sangat sering, proyek hanya menggunakan string mirip URI yang membantu melacak hierarki namespace. Ini contohnya:
<?xml version="1.0" encoding="UTF-8"?>
<carstore xmlns:real="http://testproject.developersgroup1.companyname/department2/namespaces/real"
         xmlns:toy="http://testproject.developersgroup1.companyname/department2/namespaces/toy">
<real:car category="truck">
   <model lang="en">Scania R 770</model>
   <year>2005</year>
   <price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
   <title lang="en">Ford Focus</title>
   <year>2012</year>
   <price currency="US dollar">100.00</price>
</toy:car>
</carstore>
Tentu saja, tidak ada situs web di "http://testproject.developersgroup1.companyname/department2/namespaces/real" Tetapi string ini berisi informasi yang berguna: pengembang Grup 1 di Departemen 2 bertanggung jawab untuk membuat namespace "asli" . Jika kami perlu memperkenalkan nama baru atau mendiskusikan kemungkinan konflik, kami akan tahu ke mana harus berpaling. Terkadang pengembang menggunakan alamat web deskriptif nyata sebagai nama ruang nama yang unik. Misalnya, ini mungkin terjadi pada perusahaan besar yang proyeknya akan digunakan oleh jutaan orang di seluruh dunia. Namun hal ini tentunya tidak selalu dilakukan: Stack Overflow mengadakan diskusi tentang masalah ini. Secara umum, tidak ada persyaratan ketat untuk menggunakan URI sebagai nama namespace: Anda juga dapat menggunakan string acak. Opsi ini juga akan berfungsi:
xmlns:real="nvjneasiognipni4435t9i4gpojrmeg"
Konon, menggunakan URI memiliki beberapa keuntungan. Anda dapat membaca lebih lanjut tentang ini di sini .

Standar dasar XML

Standar XML adalah sekumpulan ekstensi yang menambahkan fungsionalitas ekstra ke file XML. XML memiliki banyak standar, tetapi kita hanya akan melihat yang paling penting dan mengetahui bahwa mereka memungkinkan AJAX, yang merupakan salah satu standar XML yang paling terkenal. Ini memungkinkan Anda mengubah konten halaman web tanpa memuat ulang! XSLT memungkinkan Anda mengonversi teks XML ke format lain. Misalnya, Anda dapat menggunakan XSLT untuk mengonversi XML ke HTML! Seperti yang telah kami katakan, tujuan XML adalah untuk mendeskripsikan data, bukan untuk menampilkannya. Tetapi dengan XSLT kita dapat mengatasi batasan ini! XML DOM memungkinkan Anda mengambil, memodifikasi, menambah, atau menghapus elemen individual dari file XML. Berikut adalah contoh kecil tentang cara kerjanya. Kami memiliki file books.xml:
<bookstore>
   <book category="cooking">
       <title lang="en">Everyday Italian</title>
       <author>Giada De Laurentiis</author>
       <year>2005</year>
       <price>30.00</price>
   </book>
   <book category="children">
       <title lang="en">Harry Potter</title>
       <author>J. K. Rowling</author>
       <year>2005</year>
       <price>29.99</price>
   </book>
</bookstore>
Ini memiliki dua buku. Buku memiliki elemen <title>. Di sini kita dapat menggunakan JavaScript untuk mendapatkan semua judul buku dari file XML kita dan mencetak yang pertama ke konsol:
<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
  myFunction(this);
  }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
  document.getElementById("demo").innerHTML =
  xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
}
</script>

</body>
</html>
DTD ("definisi tipe dokumen") memungkinkan Anda menentukan daftar elemen yang diizinkan untuk entitas dalam file XML. Misalnya, kita sedang mengerjakan situs web toko buku dan semua tim pengembangan setuju bahwa hanya atribut judul, penulis, dan tahun yang harus ditentukan untuk elemen buku dalam file XML. Tapi bagaimana kita melindungi diri kita dari kecerobohan? Sangat mudah!
<?xml version="1.0"?>
<!DOCTYPE book [
       <!ELEMENT book (title,author,year)>
       <!ELEMENT title (#PCDATA)>
       <!ELEMENT author (#PCDATA)>
       <!ELEMENT year (#PCDATA)>
       ]>

<book>
   <title>The Lord of The Rings</title>
   <author>John R.R. Tolkien</author>
   <year>1954</year>
</book>
Di sini kami telah menetapkan daftar atribut yang valid untuk <book>. Coba tambahkan elemen baru di sana dan Anda akan segera mendapatkan kesalahan!
<book>
   <title>The Lord of The Rings</title>
   <author>John R.R. Tolkien</author>
   <year>1954</year>
   <mainhero>Frodo Baggins</mainhero>
</book>
Kesalahan! "Elemen mainhero tidak diperbolehkan di sini" Ada banyak standar XML lainnya. Anda dapat membiasakan diri dengan masing-masing dan mencoba menggali kode lebih dalam. Bagaimanapun, jika Anda memerlukan informasi tentang XML, Anda dapat menemukan hampir semuanya di sana :) Dan dengan ini, pelajaran kita akan berakhir. Sudah waktunya untuk kembali ke tugas! :) Sampai Lain waktu!
Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar