"Cum stă treaba?"

"Grozav. Nu mă pot plânge. Azi Bilaabo mi-a spus despre JavaScript. Nu totul, desigur, dar mai mult decât puțin. Desigur, încă nu am scris nimic în JS, dar nu cred că ar fi dificil."

„Și Ellie mi-a spus despre serializarea JSON. Și ai explicat cadrul Jackson și cum să configurezi „deserializarea polimorfă” folosind adnotări.”

"Niciun caz! Ești deștept acum, Amigo! O adevărată herghelie!"

— Și apoi niște!

„OK. Să trecem la treabă. Astăzi avem un subiect nou, interesant: XML.

XML, serializare în XML - 1

„XML este un standard pentru reprezentarea datelor care pot fi citite cu ușurință de oameni – și chiar mai ușor de programe. Iată un exemplu de fișier XML:”

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

„Baza de bază a XML este etichetele. O etichetă este un cuvânt între paranteze unghiulare (semne mai mare decât și mai puțin decât). Există etichete de deschidere și de închidere. Fiecare etichetă de deschidere are exact o etichetă de închidere corespunzătoare. Etichetele de deschidere pot avea atribute. "

„Etichetele pot fi imbricate în interiorul unei etichete, creând astfel un arbore de elemente. Eticheta de nivel superior se numește rădăcină: are etichete copil, care, la rândul lor, au propriile etichete copil.”

"Aici sunt cateva exemple:"

Etichetă Descriere
< date > Deschiderea etichetei de date
</ date > Se închide eticheta de date
nume pisică = " Missy " vârsta = " 15 "> O etichetă cu atribute. Valorile atributelor sunt împachetate între ghilimele
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Etichete imbricate.
< numele pisicii = „Missy” vârsta = „15”  /> O etichetă cu auto-închidere.
Astfel de etichete nu au nevoie de etichete de închidere.
Și nu pot avea etichete pentru copii.
<info>
Orice fel de informație poate ajunge aici
</info>
O etichetă poate conține date text
<info>
Orice tip de
<data xxx = "yyy">
</data>
de informații
<data 2xxx = "yyy"/>
poate accesa aici
</info>
O etichetă poate conține date text intercalate cu alte etichete.

"Pare ușor. Ce fel de etichete există?"

"Orice fel. Nu există etichete rezervate. XML este un limbaj pentru descrierea oricăror date. Oamenii vin cu etichete care le satisfac nevoile și convin asupra modului în care să le folosească."

„În esență, XML este o modalitate de a scrie date ca un arbore de elemente pe care un computer îl poate înțelege.”

"Cred că am înțeles acum. Apropo, am o întrebare."

„JSON este folosit pentru a trimite date de la un browser la un server, dar unde este folosit XML?”

„În aceleași locuri în care este folosit JSON: pentru stocarea și trimiterea datelor.”

— Bine, hai să continuăm.

„Imaginați-vă că aveți un fișier XML partajat care stochează date pentru un program scris de douăzeci de persoane. Fiecare dintre ele vine cu propriile etichete și încep rapid să interfereze unul cu celălalt.”

„Pentru a ne asigura că etichetele sunt unice, au fost inventate prefixele. Iată cum arată ele:”

Etichete Descriere
< animal :cat> O etichetă de pisică cu prefixul animalului
< animal :cat>
</ animal: cat>
< zoo :cat>
</ zoo :cat>
Două etichete de pisică cu prefixe diferite.
< animal : zoo pisică  : nume = "MX"> O etichetă de pisică cu prefixul animalului . Un atribut de nume cu prefixul grădinii zoologice .

„Prefixele se mai numesc și spații de nume. Dacă le numim spații de nume, atunci ultima descriere din tabel devine „O etichetă de pisică cu spațiul de nume animal. Un atribut de nume cu spațiul de nume al grădinii zoologice”.

"Apropo, vă amintiți că în Java fiecare clasă are un nume scurt și un nume lung unic care include numele pachetului, care este specificat și la importul pachetului?"

"Da."

„Ei bine, prefixele au, de asemenea, un nume lung unic și este specificat și atunci când sunt importate:

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

„' xml ns : soap' înseamnă „ XMLnume ritm SOAP'”

„De asemenea, puteți seta numele unic al etichetelor care nu au prefix:

Exemplu
<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=…’ setează spațiul de nume pentru prefixul gol. Cu alte cuvinte, setează spațiul de nume pentru etichetele fără prefix, cum ar fi datele din exemplul de mai sus.”

„Puteți avea într-un document câte spații de nume doriți, dar fiecare trebuie să aibă un nume unic.”

— Înțeleg. De ce aceste spații de nume au nume unice atât de ciudate?

„De obicei indică o adresă URL care indică un document care descrie spațiul de nume și/sau etichetele sale XML.”

"Azi mi-ai aruncat o multime de informatii. Ce altceva mai este?"

— Mai este încă puţin.

„În primul rând, XML are un antet. Este o linie specială care descrie versiunea XML și codificarea fișierului. „De obicei arată astfel:”

„De obicei arată așa:”

Exemplu
<?xml  version = "1.0"  encoding = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<săpun:articol>
<soap:info/>
</soap:item>
</date>

„De asemenea, puteți adăuga comentarii în XML. Pentru a începe un comentariu, utilizați „<!--”. Pentru a-l termina, utilizați „-->”.

Exemplu
<?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>

— Înțeleg până acum.

„Anumite simboluri (< > „ &) au o semnificație specială în XML, așa că nu pot fi folosite în altă parte. Putem ocoli această restricție cu o secvență de escape - un set de caractere folosit pentru a reprezenta alte caractere/simboluri. Aici sunt câțiva dintre ei:"

Secvență de evadare Simbol pe care îl înlocuiește
& &
" «
< <
> >
' '

„Și iată un exemplu de cod încorporat în XML:”

Cod Java Cod Java în XML
if (a < b)
System.out.println("a is minimum");
<cod>
dacă (a  <  b)
 System.out.println( " a este minim " );
</code>

— Uh... Asta nu pare frumos.

„Îți veți aminti că în Java unele caractere sunt, de asemenea, escape? De exemplu, „\”. Și că această secvență trebuie, de asemenea, scrisă de două ori atunci când scrieți într-un String? Deci aceasta este o apariție comună.”

"BINE."

— Atât am pentru azi.

„Ura. În sfârșit pot să iau o pauză”.