JavaRush /Blog Jawa /Random-JV /XML ing Jawa: Apa iku?

XML ing Jawa: Apa iku?

Diterbitake ing grup
Hello! Dina iki kita bakal kenal karo format data liyane sing diarani XML. Iki minangka topik sing penting banget. Nalika nggarap aplikasi Java nyata, sampeyan mesthi bakal nemoni masalah sing ana gandhengane karo XML. Format iki digunakake meh ing endi wae ing pangembangan Jawa (kita bakal ngerti sebabe persis ing ngisor iki), mula aku nyaranake supaya maca ceramah ora "diagonal", nanging ngerti kabeh kanthi lengkap lan ing wektu sing padha sinau literatur / pranala tambahan :) wektu temtunipun ora bakal boroske. Dadi, ayo miwiti kanthi prasaja - "apa" lan "kenapa"!

Apa XML?

XML singkatan saka eXtensible Markup Language. Sampeyan bisa uga wis kenal karo salah sawijining basa markup: sampeyan wis krungu babagan HTML, sing digunakake kanggo nggawe kaca web :) Apa XML - 1HTML lan XML katon padha:
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>
Ing tembung liyane, XML minangka basa kanggo njlèntrèhaké data.

Napa XML dibutuhake?

XML wiwitane diciptakake kanggo panyimpenan lan transmisi data sing luwih trep, kalebu liwat Internet. Wis sawetara kaluwihan sing ngidini kanggo kasil ngrampungake karo tugas iki. Kaping pisanan, gampang diwaca dening manungsa lan komputer. Aku mikir sampeyan bisa kanthi gampang ngerti apa sing diterangake file xml iki:
<?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 uga gampang ngerti format iki. Kapindho, amarga data disimpen ing format teks sing prasaja, ora bakal ana masalah kompatibilitas nalika nransfer saka komputer menyang komputer liyane. Penting kanggo mangerteni yen XML dudu kode eksekusi, nanging basa deskripsi data . Sawise sampeyan njlèntrèhaké data nggunakake XML, sampeyan kudu nulis kode (contone, ing Jawa) sing bisa ngirim / nampa / ngolah data iki.

Kepiye cara kerja XML?

Komponen utama yaiku tag: iki minangka barang ing kurung sudut:
<book>
</book>
Ana tag pambuka lan tutup. Sing nutup nduweni simbol tambahan - " /", iki bisa dideleng ing conto ing ndhuwur. Saben tag pambuka kudu duwe tag penutup sing cocog. Dheweke nuduhake ing ngendi katrangan saben unsur ing file kasebut diwiwiti lan rampung. Tag bisa dipasang! Ing conto buku kita, tag <book> nduweni 3 subtag - <title> , <author> lan <year> . Iki ora diwatesi ing siji tingkat: subtag bisa duwe subtag dhewe, lsp. Desain iki diarani wit tag. Ayo ndeleng wit nggunakake conto file XML kanthi katrangan babagan 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>
Ing kene kita duwe tag tingkat paling dhuwur - <carstore> . Iki uga disebut "root" - tag root. <carstore> duwe tag anak siji, <car>. <car>, uga duwe 3 tag anak dhewe - <model>, <taun> lan <rega>. Saben tag bisa duwe atribut - informasi penting tambahan. Ing conto kita, tag <model> nduweni atribut "lang" - basa ing ngendi jeneng model ditulis:
<model lang="en">Scania R 770</model>
Kanthi cara iki kita bisa nuduhake yen judhul ditulis nganggo basa Inggris. Tag <price> kita duwe atribut "mata uang".
<price currency="US dollar">150000.00</price>
Kanthi cara iki kita bisa nuduhake yen rega mobil ing dolar AS. Mangkono, XML duwe sintaks "nggambarake dhewe" . Sampeyan bisa nambah informasi sing perlu kanggo njlèntrèhaké data. Sampeyan uga bisa nambah baris ing awal file nuduhake versi XML lan enkoding kang data ditulis. Iki diarani " prolog " lan katon kaya iki:
<?xml version="1.0" encoding="UTF-8"?>
Kita nggunakake enkoding XML versi 1.0 lan UTF-8. Iki ora perlu, nanging bisa migunani yen, contone, sampeyan nggunakake teks ing macem-macem basa ing file sampeyan. Kita nyatakake yen XML tegese "basa markup sing bisa diperluas," nanging apa tegese "extensible"? Iki tegese iku cocog kanggo nggawe versi anyar saka obyek lan file. Contone, kita pengin showroom mobil kita uga miwiti adol motor! Ing wektu sing padha, ing program kita kudu ndhukung loro versi <carstore> - loro lawas (tanpa motor) lan anyar. Punika versi lawas kita:
<?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>
Lan iki sing anyar, ditambahi:
<?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>
Dadi gampang lan gampang, kita nambahake katrangan sepeda motor menyang file kita :) Ing wektu sing padha, kita pancen ora perlu nyetel tag anak sing padha kanggo motor kaya mobil. Wigati dimangerteni manawa motor, ora kaya mobil, duwe unsur <owner> - pemilik. Iki ora bakal nyegah komputer (utawa wong) saka maca data.

Bedane antarane XML lan HTML

Kita wis ujar manawa XML lan HTML meh padha karo tampilan. Mulane, penting banget kanggo ngerti kepiye bedane. Kaping pisanan, padha digunakake kanggo macem-macem tujuan. HTML - kanggo menehi tandha kaca web. Contone, yen sampeyan kudu nggawe situs web, nggunakake HTML sampeyan bisa nemtokake: "Menu kudu ana ing pojok tengen ndhuwur. Mesthine ana tombol kasebut lan iki. Ing tembung liya, tujuan HTML yaiku kanggo nampilake data. XML - kanggo nyimpen lan ngirim informasi ing wangun trep kanggo manungsa lan komputer. Format iki ora ngemot instruksi babagan carane data iki kudu ditampilake: gumantung saka kode program kasebut. Kapindho, dheweke duwe prabédan teknis utama. Tag HTML wis ditemtokake. Ing tembung liya, kanggo nggawe judhul (contone, prasasti gedhe ing wiwitan kaca), mung tag <h1></h1> sing digunakake ing HTML (kanggo judhul sing luwih cilik - <h2></h2>, < h3></h3>). Sampeyan ora bakal bisa nggawe judhul ing HTML nggunakake tag kanthi judhul sing beda. XML ora nggunakake tag sing wis ditemtokake. Sampeyan bisa menehi tag jeneng apa wae sing dikarepake - <header>, <title>, <idontknow2121>.

Resolusi konflik

Kebebasan sing diwenehake XML uga bisa nyebabake sawetara masalah. Contone, entitas sing padha (contone, mobil) bisa digunakake dening program kanggo macem-macem tujuan. Contone, kita duwe file XML sing nggambarake mesin. Nanging, programer kita ora setuju sadurunge. Lan saiki, saliyane data saka mobil nyata, xml kita uga kalebu data saka model dolanan! Kajaba iku, padha duwe atribut sing padha. Program kita nampa file XML ing ngisor iki. Kepiye carane bisa ngomong mobil asli saka model dolanan?
<?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>
Ater-ater lan ruang jeneng bakal mbantu kita ing kene. Kanggo misahake mobil dolanan saka mobil nyata ing program kita (lan, ing umum, samubarang dolanan saka prototipe nyata), kita ngenalake rong awalan - "nyata" lan "dolanan".
<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>
Saiki program kita bakal bisa mbedakake antarane entitas! Apa wae sing nganggo awalan dolanan bakal digolongake minangka dolanan :) Nanging, kita durung rampung. Kanggo nggunakake ater-ater, kita kudu ndhaptar saben-saben minangka ruang jeneng. Inggih, bener, "ndhaftar" iku tembung kuwat :) Sampeyan mung kudu teka munggah karo jeneng unik kanggo saben wong. Kaya karo kelas: kelas duwe jeneng cendhak ( Cat) lan jeneng lengkap karo kabeh paket ( zoo.animals.Cat) Kanggo nggawe spasi jeneng unik, URI biasane digunakake . Kadhangkala alamat Internet diganti ing kene, ing ngendi fungsi lan tujuan ruang jeneng iki diterangake kanthi rinci. Nanging iki ora kudu alamat Internet sing bener. Asring banget, proyek mung nggunakake senar kaya URI sing mbantu nglacak hirarki ruang jeneng. Iki contone:
<?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>
Mesthi, ora ana situs ing Internet ing alamat http://testproject.developersgroup1.companyname/department2/namespaces/real Nanging ana informasi sing migunani: grup pangembang "developersgroup1" saka departemen "department2" tanggung jawab kanggo nggawe papan jeneng "nyata". Yen sampeyan perlu kanggo nambah jeneng anyar, utawa ngrembug bisa konflik karo wong-wong mau, kita ngerti ngendi kanggo nguripake. Kadhangkala alamat Internet nyata kanthi katrangan babagan ruang jeneng iki digunakake minangka jeneng unik kanggo ruang jeneng. Contone, yen perusahaan gedhe lan proyeke bakal digunakake dening mayuta-yuta wong ing saindenging jagad. Nanging iki ora tansah rampung: ana diskusi masalah iki ing Stackoverflow . Ing asas, syarat kanggo nggunakake URI minangka jeneng kanggo namespaces ora ketat: sampeyan mung bisa nggunakake strings acak. Opsi iki uga bisa digunakake:
xmlns:real="nvjneasiognipni4435t9i4gpojrmeg"
Nanging ana sawetara kaluwihan kanggo nggunakake URI. Sampeyan bisa maca liyane babagan iki kene .

Standar Inti XML

Standar XML minangka sakumpulan ekstensi sing nambah fungsi tambahan menyang file xml. XML wis akeh standar, nanging kita mung bakal katon ing paling penting lan mangerteni apa padha ngidini AJAX , salah siji saka standar XML paling misuwur, apa. Ngidini sampeyan ngganti isi kaca web tanpa ngisi maneh! Swara kelangan? :) Sampeyan bisa nyoba teknologi iki ing wong kene . XSLT - ngidini sampeyan ngowahi teks XML menyang format liyane. Contone, nggunakake XSLT, sampeyan bisa ngowahi XML menyang HTML! Tujuan XML, kaya sing wis dakkandhakake, yaiku kanggo njlèntrèhaké data, dudu kanggo nampilake. Nanging nggunakake XSLT kita bisa ngliwati watesan iki! Punika kothak wedhi karo conto digunakake, ngendi sampeyan bisa ndeleng dhewe cara kerjane :) XML DOM - ngijini sampeyan kanggo njaluk, ngganti, nambah utawa mbusak unsur individu saka file XML. Iki minangka conto cilik babagan cara kerjane. Kita duwe 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>
Ana rong buku. Buku nduweni unsur kaya judhul - <judul>. Lan ing kene kita bisa nggunakake JavaScript kanggo entuk kabeh judhul buku saka file XML lan ngasilake sing pertama menyang 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>
Maneh, aku nyaranake ndeleng carane conto iki dianggo nggunakake kothak wedhi :) DTD ("Dokumen jinis definisi") - ngijini sampeyan kanggo nemtokake dhaftar unsur diijini kanggo sawetara entitas ing file XML. Contone, kita nggarap situs web toko buku, lan kabeh tim pangembang wis setuju yen kanggo unsur buku, mung judhul, penulis, lan atribut taun sing kudu ditemtokake ing file XML. Nanging piyé carané awaké dhéwé isa nglindhungi awaké dhéwé saka ora nggatèkké? Gampang banget!
<?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>
Ing kene kita wis nemtokake dhaptar atribut sing valid kanggo <buku>. Coba tambahake unsur anyar ing kana lan sampeyan bakal entuk 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 ora diijini ing kene" Ana akeh standar XML liyane. Sampeyan bisa njaluk kenalan karo saben wong lan nyoba kanggo digali luwih jero menyang kode ing situs web WC3 (bagean "Standar XML Penting"). Lan umume, yen sampeyan butuh informasi babagan XML, sampeyan bisa nemokake meh kabeh sing ana :) Ya, kuliah kita wis rampung. Wektu kanggo bali menyang tugas! :) Sampai ketemu!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION