"Hvordan går det?"

"Fint. Kan ikke klage. I dag fortalte Bilaabo mig om JavaScript. Ikke alt, selvfølgelig, men mere end bare lidt. Jeg har selvfølgelig stadig ikke skrevet noget i JS, men jeg tror ikke, det ville være svært."

"Og Ellie fortalte mig om JSON-serialisering. Og du forklarede Jackson-rammen, og hvordan man opsætter 'polymorf deserialisering' ved hjælp af annoteringer."

"No way! Du er smart nu, Amigo! En rigtig stud!"

"Og så nogle!"

"OK. Lad os gå i gang. I dag har vi et nyt, interessant emne: XML. "

XML, serialisering til XML - 1

"XML er en standard til at repræsentere data, der let kan læses af mennesker - og endnu nemmere af 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>

"Fundamentet i XML er tags. Et tag er et ord i vinkelparenteser (større-end- og mindre-end-tegn). Der er åbnings- og lukketags. Hver åbningstag har præcis ét tilsvarende afsluttende tag. Åbningstags kan have attributter. "

"Tags kan indlejres inde i et tag og derved skabe et elementtræ. Tagget på øverste niveau kaldes roden: det har underordnede tags, som igen har deres egne underordnede tags."

"Her er nogle eksempler:"

Tag Beskrivelse
< data > Åbner datatag
</ data > Lukker datatag
<cat  name = " Missy " age = " 15 "> Et tag med attributter. Attributværdier er pakket ind i anførselstegn
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Indlejrede tags.
< kattens navn = "Frøken" alder = "15"  /> Et selvlukkende mærke.
Sådanne tags behøver ikke lukke-tags.
Og de kan ikke have børnemærker.
<info>
Enhver form for information kan gå her
</info>
Et tag kan indeholde tekstdata
<info>
Enhver form for
<data xxx = "yyy">
</data>
information
<data 2xxx = "yyy"/>
kan gå her
</info>
Et tag kan indeholde tekstdata blandet med andre tags.

"Det ser nemt ud. Hvilken slags tags er der?"

"Enhver form. Der er ingen reserverede tags. XML er et sprog til at beskrive alle data. Folk kommer med de tags, der opfylder deres behov og bliver enige om, hvordan de skal bruges."

"I bund og grund er XML en måde at skrive data på som et elementtræ, som en computer kan forstå."

"Jeg tror, ​​jeg forstår det nu. Jeg har i øvrigt et spørgsmål."

"JSON bruges til at sende data fra en browser til en server, men hvor bruges XML?"

"På de samme steder, hvor JSON bruges: til lagring og afsendelse af data."

"Okay, lad os fortsætte."

"Forestil dig, at du har én delt XML-fil, der gemmer data til et program, der er skrevet af tyve personer. Hver af dem kommer med deres egne tags, og de begynder hurtigt at forstyrre hinanden."

"For at sikre, at tags er unikke, blev præfikser opfundet. Sådan ser de ud:"

Tags Beskrivelse
< dyr :kat> Et kattemærke med dyrepræfikset
< dyr :kat>
</ dyr: kat>
< zoo :kat>
</ zoo :kat>
To kattemærker med forskellige præfikser.
< dyr : kattezoo  : navn = "MX"> Et kattemærke med dyrepræfikset . En navneattribut med zoo- præfikset.

"Præfikser kaldes også navnerum. Hvis vi kalder dem navnerum, så bliver den sidste beskrivelse i tabellen 'Et kattemærke med dyrenavnerummet. En navneattribut med zoo-navnerummet'."

"Kan du i øvrigt huske, at i Java har hver klasse et kort navn og et langt unikt navn, der inkluderer pakkenavnet, som også angives ved import af pakken?"

"Ja."

"Tja, præfikser har også et unikt langt navn, og det er også angivet, når det importeres: "

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

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

"Du kan også indstille det unikke navn på tags, der ikke har noget præfiks: "

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" > 
< sæbe :item> 
< sæbe :info/> 
< opgave :info/> 
</ sæbe :item> 
</data>

"'xmlns=...' indstiller navneområdet for det tomme præfiks. Med andre ord indstiller det navneområdet for tags uden et præfiks, såsom data i eksemplet ovenfor."

"Du kan have så mange navneområder i et dokument, som du vil, men hver skal have et unikt navn."

"Jeg kan se. Hvorfor har disse navneområder så mærkelige unikke navne?"

"De angiver normalt en URL, der peger på et dokument, der beskriver navneområdet og/eller dets XML-tags."

"Du dumpede en masse information på mig i dag. Hvad er der ellers?"

"Der er stadig lidt mere."

"For det første har XML en header. Det er en speciel linje, der beskriver XML-versionen og filkodningen. "Det ser normalt sådan ud:"

"Det ser normalt sådan ud:"

Eksempel
<?xml  version = "1.0"  -kodning = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<sæbe:vare>
<soap:info/>
</soap:item>
</data>

"Du kan også tilføje kommentarer til XML. For at starte en kommentar, brug '<!--'. For at afslutte den, brug '-->'."

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 indtil videre."

"Visse symboler (< > " &) har en særlig betydning i XML, så de kan ikke bruges andre steder. Vi kan komme uden om denne begrænsning med en escape-sekvens - et sæt tegn, der bruges til at repræsentere andre tegn/symboler. Her er nogle af dem:"

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

"Og her er et eksempel på kode indlejret 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 kønt ud."

"Du kan huske, at i Java er nogle tegn også escaped? For eksempel "\". Og at denne sekvens også skal skrives to gange, når du skriver til en streng? Så dette er en almindelig begivenhed."

"OKAY."

"Det er alt, jeg har for i dag."

"Hurra. Jeg kan endelig holde en pause."