"Nasıl gidiyor?"

"Harika. Şikayet edemem. Bugün Bilaabo bana JavaScript'ten bahsetti. Elbette her şeyi değil, ama birazdan daha fazlasını. Tabii ki hala JS'de hiçbir şey yazmadım ama olacağını sanmıyorum. zor."

"Ve Ellie bana JSON serileştirmesinden bahsetti. Sen de Jackson çerçevesini ve açıklamaları kullanarak 'polimorfik seri kaldırma'nın nasıl kurulacağını açıkladın."

"Olamaz! Artık akıllısın, Amigo! Gerçek bir aygır!"

"Ve sonra biraz!"

"Tamam. Hadi işe koyulalım. Bugün yeni ve ilginç bir konumuz var: XML. "

XML, XML'e serileştirme - 1

"XML, insanlar tarafından ve hatta programlar tarafından daha da kolay okunabilen verileri temsil eden bir standarttır. İşte örnek bir XML dosyası:"

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

"XML'nin temeli etiketlerdir. Bir etiket, açılı ayraçlar içindeki bir kelimedir (büyüktür ve küçüktür işaretleri). Açılış ve kapanış etiketleri vardır. Her açılış etiketinin tam olarak karşılık gelen bir kapanış etiketi vardır. Açılış etiketlerinin nitelikleri olabilir. "

"Etiketler bir etiketin içine yerleştirilebilir, böylece bir öğe ağacı oluşturulur. Üst düzey etiket kök olarak adlandırılır: kendi alt etiketlerine sahip olan alt etiketlere sahiptir."

"İşte bazı örnekler:"

Etiket Tanım
< veri > Veri etiketi açılıyor
</ veri > Veri etiketi kapatılıyor
<cat  name = " Missy " yaş = " 15 "> Nitelikleri olan bir etiket. Özellik değerleri tırnak içine alınır
<veri>
<sahip>
<cat name = "Missy"/>
</owner>
</data>
İç içe etiketler.
< kedi adı = "Missy" yaş = "15"  /> Kendi kendine kapanan bir etiket.
Bu tür etiketlerin kapanış etiketlerine ihtiyacı yoktur.
Ve alt etiketleri olamaz.
<info>
Her türlü bilgi buraya gelebilir
</info>
Bir etiket, metin verileri içerebilir
<info>
Her türlü
<data xxx = "yyy">
</data>
bilgi
<data 2xxx = "yyy"/>
buraya gelebilir
</info>
Bir etiket, diğer etiketlerle serpiştirilmiş metin verileri içerebilir.

"Kolay görünüyor. Ne tür etiketler var?"

"Her türlü. Ayrılmış etiket yok. XML, herhangi bir veriyi açıklayan bir dildir. İnsanlar ihtiyaçlarını karşılayan etiketleri bulur ve bunları nasıl kullanacakları konusunda anlaşırlar."

"Aslında XML, verileri bir bilgisayarın anlayabileceği bir öğe ağacı olarak yazmanın bir yoludur."

"Sanırım şimdi anladım. Bu arada, bir sorum var."

"JSON, bir tarayıcıdan bir sunucuya veri göndermek için kullanılır, ancak XML nerede kullanılır?"

"JSON'un kullanıldığı yerlerde: veri depolamak ve göndermek için."

"Tamam, devam edelim."

"Yirmi kişi tarafından yazılan bir programın verilerini depolayan paylaşılan bir XML dosyanız olduğunu hayal edin. Her biri kendi etiketleriyle gelir ve hızla birbirleriyle karışmaya başlarlar."

"Etiketlerin benzersiz olmasını sağlamak için önekler icat edildi. Şu şekilde görünüyorlar:"

Etiketler Tanım
< hayvan :kedi> Hayvan ön ekine sahip bir kedi etiketi
< hayvan :kedi>
</ hayvan: kedi>
< hayvanat bahçesi :kedi>
</ hayvanat bahçesi :kedi>
Farklı öneklere sahip iki kedi etiketi.
< hayvan : kedi  hayvanat bahçesi : isim = "MX"> Hayvan ön ekine sahip bir kedi etiketi . Hayvanat bahçesi ön ekine sahip bir ad özelliği .

"Öneklere ad alanları da denir. Onlara ad alanları dersek, tablodaki son açıklama 'Hayvan ad alanıyla birlikte bir kedi etiketi. Hayvanat bahçesi ad alanıyla birlikte bir ad niteliği' olur."

"Bu arada, Java'da her sınıfın bir kısa adı ve paketi içe aktarırken de belirtilen paket adını içeren uzun bir benzersiz adı olduğunu hatırlıyor musunuz?"

"Evet."

"Eh, öneklerin de benzersiz bir uzun adı vardır ve içe aktarılırken de belirtilir: "

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

"' xml ns : soap', ' XMLad s pace SOAP' anlamına gelir"

" Öneki olmayan etiketlerin benzersiz adlarını da belirleyebilirsiniz : "

Örnek
<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=…', boş önek için ad alanını ayarlar. Başka bir deyişle, yukarıdaki örnekteki veriler gibi öneki olmayan etiketler için ad alanını ayarlar."

"Bir belgede istediğiniz kadar ad alanı olabilir, ancak her birinin benzersiz bir adı olmalıdır."

"Anlıyorum. Bu ad alanlarının neden bu kadar tuhaf benzersiz adları var?"

"Genellikle ad alanını ve/veya onun XML etiketlerini tanımlayan bir belgeye işaret eden bir URL'yi belirtirler."

"Bugün bana bir sürü bilgi verdin. Başka ne var?"

"Hala biraz daha var."

"İlk olarak, XML'in bir başlığı vardır. Bu, XML sürümünü ve dosya kodlamasını açıklayan özel bir satırdır. "Genellikle şöyle görünür:"

"Genellikle şöyle görünür:"

Örnek
<?xml  versiyonu = "1.0"  kodlaması = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<sabun:öğe>
<sabun:bilgi/>
</sabun:öğe>
</data>

"XML'ye yorum da ekleyebilirsiniz. Yorum başlatmak için '<!--' kullanın. Yorumu bitirmek için '-->' kullanın."

Örnek
<?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>

"Şimdiye kadar anlıyorum."

"Belirli sembollerin (< > " &) XML'de özel anlamı vardır, dolayısıyla başka yerde kullanılamazlar. Bu kısıtlamayı, diğer karakterleri/sembolleri temsil etmek için kullanılan bir dizi karakter olan bir kaçış sekansıyla aşabiliriz. Bunlardan bazıları:"

Kaçış dizisi Yerine geçtiği sembol
& amp; &
" «
< <
> >
' '

"Ve işte XML'e katıştırılmış bir kod örneği:"

java kodu XML'de Java kodu
if (a < b)
System.out.println("a is minimum");
<kod>
eğer (a  <  b)
 System.out.println( " a minimumdur " );
</kod>

"Uh... Bu hiç hoş görünmüyor."

"Java'da bazı karakterlerin de kaçtığını hatırlayacaksınız? Örneğin, "\". Ve bir String'e yazarken bu dizinin de iki kez yazılması gerektiğini? Yani bu yaygın bir olaydır."

"TAMAM."

"Bugünlük benden bu kadar."

"Yaşasın. Sonunda biraz ara verebilirim."