"Hvordan går det?"

"Flott. Kan ikke klage. I dag fortalte Bilaabo meg om JavaScript. Ikke alt, selvfølgelig, men mer enn bare litt. Selvfølgelig har jeg fortsatt ikke skrevet noe i JS, men jeg tror ikke det ville vært det. vanskelig."

"Og Ellie fortalte meg om JSON-serialisering. Og du forklarte Jackson-rammeverket og hvordan man setter opp 'polymorf deserialisering' ved å bruke merknader."

"Nå ingen måte! Du er smart nå, Amigo! En ekte stud!"

"Og litt til!"

"OK. La oss sette i gang. I dag har vi et nytt, interessant emne: XML. "

XML, serialisering til XML - 1

"XML er en standard for å representere data som enkelt kan leses av mennesker – og enda enklere av programmer. Her er et eksempel på en XML-fil:"

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

"Grunnlaget for XML er tagger. En tag er et ord i vinkelparenteser (større-enn og mindre-enn-tegn). Det finnes åpnings- og lukketagger. Hver åpningstagg har nøyaktig én tilsvarende lukketag. Åpningstagger kan ha attributter. "

"Tags kan nestes inne i en tag, og dermed skape et elementtre. Toppnivåtaggen kalles roten: den har underordnede etiketter, som igjen har sine egne underordnede etiketter."

"Her er noen eksempler:"

stikkord Beskrivelse
< data > Åpner datatag
</ data > Lukking av datatag
<cat  name = " Missy " age = " 15 "> Et merke med attributter. Attributtverdier er pakket inn i anførselstegn
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Nestede tagger.
< cat name = "Missy" age = "15"  /> En selvlukkende merkelapp.
Slike tagger trenger ikke lukkebrikker.
Og de kan ikke ha barnemerker.
<info>
Alle typer informasjon kan gå her
</info>
En tag kan inneholde tekstdata
<info>
Alle typer
<data xxx = "yyy">
</data>
informasjon
<data 2xxx = "yyy"/>
kan gå her
</info>
En tag kan inneholde tekstdata ispedd andre tagger.

"Det ser enkelt ut. Hva slags tagger er det?"

"Alle typer. Det er ingen reserverte tagger. XML er et språk for å beskrive data. Folk kommer opp med taggene som dekker deres behov og blir enige om hvordan de skal brukes."

"I hovedsak er XML en måte å skrive data på som et elementtre som en datamaskin kan forstå."

"Jeg tror jeg skjønner det nå. Jeg har forresten et spørsmål."

"JSON brukes til å sende data fra en nettleser til en server, men hvor brukes XML?"

"På de samme stedene som JSON brukes: for lagring og sending av data."

"Ok, la oss fortsette."

"Se for deg at du har én delt XML-fil som lagrer data for et program som er skrevet av tjue personer. Hver av dem kommer opp med sine egne tagger, og de begynner raskt å forstyrre hverandre."

"For å sikre at tagger er unike, ble prefikser oppfunnet. Slik ser de ut:"

Tagger Beskrivelse
< dyr :katt> Et kattemerke med dyreprefikset
< dyr :katt>
</ dyr: katt>
< dyrehage :katt>
</ dyrehage :katt>
To kattelapper med forskjellige prefikser.
< dyr : katt  zoo : name = "MX"> Et kattemerke med dyreprefikset . Et navneattributt med dyrehagens prefiks.

"Prefikser kalles også navnerom. Hvis vi kaller dem navnerom, blir den siste beskrivelsen i tabellen "En kattelapp med dyrenavneområdet. Et navneattributt med dyrehagens navneområde."

"Husker du forresten at i Java har hver klasse et kort navn og et langt unikt navn som inkluderer pakkenavnet, som også angis ved import av pakken?"

"Japp."

"Vel, prefikser har også et unikt langt navn, og det spesifiseres også når de importeres: "

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

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

"Du kan også angi det unike navnet på tagger som ikke har noe prefiks: "

Eksempel
<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=...' setter navneområdet for det tomme prefikset. Med andre ord, det setter navneområdet for tagger uten prefiks, for eksempel data i eksemplet ovenfor."

"Du kan ha så mange navneområder i et dokument du vil, men hver må ha et unikt navn."

"Jeg skjønner. Hvorfor har disse navnerommene så merkelige unike navn?"

"De indikerer vanligvis en URL som peker til et dokument som beskriver navneområdet og/eller dets XML-koder."

"Du dumpet mye informasjon på meg i dag. Hva mer er det?"

— Det er fortsatt litt mer.

"For det første har XML en overskrift. Det er en spesiell linje som beskriver XML-versjonen og filkodingen. "Det ser vanligvis slik ut:"

"Det ser vanligvis slik ut:"

Eksempel
<?xml  versjon = "1.0"  -koding = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<såpe:vare>
<soap:info/>
</soap:item>
</data>

"Du kan også legge til kommentarer i XML. For å starte en kommentar, bruk '<!--'. For å avslutte den, bruk '-->'."

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

— Jeg forstår så langt.

"Enkelte symboler (< > " &) har spesiell betydning i XML, så de kan ikke brukes andre steder. Vi kan komme rundt denne begrensningen med en escape-sekvens – et sett med tegn som brukes til å representere andre tegn/symboler. Her er noen av dem:"

Escape-sekvens Symbol som den erstatter
& &
" «
< <
> >
' '

"Og her er et eksempel på kode innebygd i XML:"

Java-kode Java-kode i XML
if (a < b)
System.out.println("a is minimum");
<kode>
hvis (a  <  b)
 System.out.println( " a er minimum " );
</code>

"Øh... Det ser ikke pent ut."

"Du vil huske at i Java er noen tegn også escaped? For eksempel "\". Og at denne sekvensen også må skrives to ganger når du skriver til en streng? Så dette er en vanlig forekomst."

"OK."

"Det er alt jeg har for i dag."

"Hurra. Jeg kan endelig ta en pause."