"Macam mana keadaannya?"

"Hebat. Tidak boleh merungut. Hari ini Bilaabo memberitahu saya tentang JavaScript. Tidak semuanya, sudah tentu, tetapi lebih daripada sekadar sedikit. Sudah tentu, saya masih belum menulis apa-apa dalam JS, tetapi saya tidak fikir ia akan menjadi sukar."

"Dan Ellie memberitahu saya tentang pensirilan JSON. Dan anda menerangkan rangka kerja Jackson dan cara menyediakan 'penyahserilan polimorfik' menggunakan anotasi."

"No way! Awak dah pandai sekarang, Amigo! Stud sungguh!"

"Dan kemudian beberapa!"

"OK. Mari kita mula bekerja. Hari ini kita mempunyai topik baharu yang menarik: XML. "

XML, bersiri ke dalam XML - 1

"XML ialah standard untuk mewakili data yang boleh dibaca dengan mudah oleh manusia—dan lebih mudah lagi oleh atur cara. Berikut ialah contoh fail XML:"

XML
<data>
<owner first="Adam" last="Shelton">
<address>London</address>
</owner>
<cat name="Missy" age="15"/>
</data>

"Asas XML ialah teg. Teg ialah perkataan dalam kurungan sudut (tanda lebih besar daripada dan kurang daripada). Terdapat teg pembukaan dan penutup. Setiap teg pembukaan mempunyai tepat satu teg penutup yang sepadan. Teg pembuka boleh mempunyai atribut. "

"Teg boleh bersarang di dalam teg, dengan itu mencipta pepohon elemen. Teg peringkat atas dipanggil akar: ia mempunyai teg anak, yang seterusnya mempunyai teg anak sendiri."

"Berikut adalah beberapa contoh:"

Tag Penerangan
< data > Membuka teg data
</ data > Tag data penutup
<cat  name = " Missy " age = " 15 "> Teg dengan atribut. Nilai atribut dibungkus dalam petikan
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Tag bersarang.
< nama kucing = "Missy" umur = "15"  /> Tag penutup diri.
Teg sedemikian tidak memerlukan teg penutup.
Dan mereka tidak boleh mempunyai tanda nama kanak-kanak.
<info>
Sebarang jenis maklumat boleh pergi ke sini
</info>
Teg boleh mengandungi data teks
<info>
Sebarang jenis
<data xxx = "yyy">
</data>
maklumat
<data 2xxx = "yyy"/>
boleh pergi ke sini
</info>
Teg mungkin mengandungi data teks yang diselingi dengan teg lain.

"Nampak mudah. ​​Apakah jenis tag yang ada?"

"Apa-apa jenis. Tiada teg simpanan. XML ialah bahasa untuk menerangkan sebarang data. Orang ramai menghasilkan teg yang memenuhi keperluan mereka dan bersetuju tentang cara menggunakannya."

"Pada asasnya, XML ialah cara untuk menulis data sebagai pokok elemen yang boleh difahami oleh komputer."

"Saya rasa saya faham sekarang. By the way, saya ada soalan."

"JSON digunakan untuk menghantar data daripada penyemak imbas ke pelayan, tetapi di manakah XML digunakan?"

"Di tempat yang sama di mana JSON digunakan: untuk menyimpan dan menghantar data."

"Baiklah, mari kita sambung."

"Bayangkan anda mempunyai satu fail XML kongsi yang menyimpan data untuk program yang ditulis oleh dua puluh orang. Setiap daripada mereka muncul dengan tag mereka sendiri, dan mereka mula mengganggu satu sama lain."

"Untuk memastikan bahawa teg adalah unik, awalan telah dicipta. Beginilah rupanya:"

Tag Penerangan
< haiwan : kucing> Tag kucing dengan awalan haiwan
< haiwan :kucing>
</ haiwan: kucing>
< zoo :cat>
</ zoo :cat>
Dua tag kucing dengan awalan berbeza.
< haiwan : zoo kucing  : name = "MX"> Tag kucing dengan awalan haiwan . Atribut nama dengan awalan zoo .

"Awalan juga dipanggil ruang nama. Jika kita memanggilnya ruang nama, maka perihalan terakhir dalam jadual menjadi 'Tag kucing dengan ruang nama haiwan. Atribut nama dengan ruang nama zoo.'"

"Dengan cara ini, adakah anda masih ingat bahawa dalam Java setiap kelas mempunyai nama pendek dan nama unik yang panjang yang merangkumi nama pakej, yang juga dinyatakan semasa mengimport pakej?"

"Ya."

"Nah, awalan juga mempunyai nama panjang yang unik, dan ia juga dinyatakan apabila diimport: "

Contoh
< data  xmlns:soap="http://cxf.apache.org/bindings/soap" >
 < soap :item> 
< soap :info/> 
</ soap :item> 
</ data >

"' xml ns :soap' bermaksud ' XMLn ame s pace SOAP'"

"Anda juga boleh menetapkan nama unik teg yang tidak mempunyai awalan: "

Contoh
<data xmlns = "http://www.springframework.org/schema/beans" 
xmlns: soap = "http://cxf.apache.org/bindings/soap" 
xmlns:task = "http://www.springframework .org/schema/task" > 
< soap :item> 
< soap :info/> 
< task :info/> 
</ soap :item> 
</data>

"'xmlns=…' menetapkan ruang nama untuk awalan kosong. Dalam erti kata lain, ia menetapkan ruang nama untuk teg tanpa awalan, seperti data dalam contoh di atas."

"Anda boleh mempunyai seberapa banyak ruang nama dalam dokumen yang anda mahu, tetapi setiap satu mesti mempunyai nama yang unik."

"Saya faham. Kenapa ruang nama ini mempunyai nama unik yang pelik?"

"Mereka biasanya menunjukkan URL yang menunjuk ke dokumen yang menerangkan ruang nama dan/atau teg XMLnya."

"Awak buang banyak maklumat tentang saya hari ini. Apa lagi yang ada?"

"Masih ada sedikit lagi."

"Pertama, XML mempunyai pengepala. Ia adalah baris khas yang menerangkan versi XML dan pengekodan fail. "Ia biasanya kelihatan seperti ini:"

"Ia biasanya kelihatan seperti ini:"

Contoh
<?xml  version = "1.0"  encoding = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<soap:item>
<soap:info/>
</soap:item>
</data>

"Anda juga boleh menambah ulasan pada XML. Untuk memulakan ulasan, gunakan '<!--'. Untuk menamatkannya, gunakan '-->'."

Contoh
<?xml version = "1.0" encoding = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<soap:item>
<!-- <soap:info/> -->
</soap:item>
<!-- This is also a comment  -->
</data>

"Saya faham setakat ini."

"Simbol tertentu (< > " &) mempunyai makna istimewa dalam XML, jadi ia tidak boleh digunakan di tempat lain. Kita boleh mengatasi sekatan ini dengan urutan melarikan diri—satu set aksara yang digunakan untuk mewakili aksara/simbol lain. Berikut adalah sebahagian daripada mereka:"

Urutan melarikan diri Simbol yang digantikannya
& &
" «
< <
> >
' '

"Dan berikut ialah contoh kod yang dibenamkan dalam XML:"

kod Java Kod Java dalam XML
if (a < b)
System.out.println("a is minimum");
<kod>
jika (a  <  b)
 System.out.println( " a adalah minimum " );
</code>

"Eh... Nampak tak cantik."

"Anda akan ingat bahawa dalam Java beberapa aksara juga terlepas? Contohnya, "\". Dan bahawa urutan ini juga mesti ditulis dua kali apabila menulis kepada String? Jadi ini adalah kejadian biasa."

"OKEY."

"Itu sahaja yang saya ada untuk hari ini."

"Hooray. Saya akhirnya boleh berehat."