"Hoe gaat het?"

"Geweldig. Ik mag niet klagen. Bilaabo heeft me vandaag over JavaScript verteld. Niet alles natuurlijk, maar meer dan een klein beetje. Ik heb natuurlijk nog steeds niets in JS geschreven, maar ik denk niet dat het moeilijk."

"En Ellie vertelde me over JSON-serialisatie. En je legde het Jackson-framework uit en hoe je 'polymorfe deserialisatie' opzet met behulp van annotaties."

"Geen sprake van! Je bent nu slim, Amigo! Een echte dekhengst!"

"En dan een beetje!"

"OK. Laten we aan het werk gaan. Vandaag hebben we een nieuw, interessant onderwerp: XML. "

XML, serialisatie naar XML - 1

"XML is een standaard voor het weergeven van gegevens die gemakkelijk door mensen kunnen worden gelezen - en nog gemakkelijker door programma's. Hier is een voorbeeld van een XML-bestand:"

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

"De basis van XML zijn tags. Een tag is een woord tussen punthaken (groter-dan- en kleiner-dan-tekens). Er zijn openings- en sluittags. Elke openingstag heeft precies één overeenkomstige sluittag. Openingstags kunnen attributen hebben. "

"Tags kunnen binnen een tag worden genest, waardoor een elementboom ontstaat. De tag op het hoogste niveau wordt de root genoemd: deze heeft onderliggende tags, die op hun beurt hun eigen onderliggende tags hebben."

"Hier zijn enkele voorbeelden:"

Label Beschrijving
< gegevens > Gegevenslabel openen
</ gegevens > Gegevenslabel sluiten
<cat  name = " Missy " age = " 15 "> Een tag met attributen. Kenmerkwaarden zijn tussen aanhalingstekens geplaatst
<data>
<eigenaar>
<kattennaam = "Missy"/>
</eigenaar>
</data>
Geneste tags.
< kattennaam = "Missy" leeftijd = "15"  /> Een zelfsluitende tag.
Dergelijke tags hebben geen sluittags nodig.
En ze kunnen geen onderliggende tags hebben.
<info>
Alle soorten informatie kan hier terecht
</info>
Een tag kan tekstgegevens bevatten
<info>
Alle soorten
<data xxx = "yyy">
</data>
informatie
<data 2xxx = "yyy"/>
kan hier terecht
</info>
Een tag kan tekstgegevens bevatten die zijn afgewisseld met andere tags.

"Het ziet er eenvoudig uit. Welke soorten tags zijn er?"

"Alle soorten. Er zijn geen gereserveerde tags. XML is een taal voor het beschrijven van alle gegevens. Mensen bedenken de tags die aan hun behoeften voldoen en spreken af ​​hoe ze die moeten gebruiken."

"In wezen is XML een manier om gegevens te schrijven als een elementenboom die een computer kan begrijpen."

'Ik denk dat ik het nu snap. Trouwens, ik heb een vraag.'

"JSON wordt gebruikt om gegevens van een browser naar een server te sturen, maar waar wordt XML gebruikt?"

"Op dezelfde plekken waar JSON wordt gebruikt: voor het opslaan en verzenden van data."

"Oké, laten we doorgaan."

"Stel je voor dat je één gedeeld XML-bestand hebt dat gegevens opslaat voor een programma dat door twintig mensen wordt geschreven. Elk van hen komt met hun eigen tags en ze beginnen elkaar snel te hinderen."

"Om ervoor te zorgen dat tags uniek zijn, zijn voorvoegsels uitgevonden. Zo zien ze eruit:"

Labels Beschrijving
< dier :kat> Een kattenpenning met het voorvoegsel dier
< dier :kat>
</ dier: kat>
< dierentuin :kat>
</ dierentuin :kat>
Twee kattentags met verschillende voorvoegsels.
< dier : kattendierentuin  : naam = "MX"> Een kattenpenning met het voorvoegsel dier . Een naamkenmerk met het voorvoegsel van de dierentuin .

"Voorvoegsels worden ook naamruimten genoemd. Als we ze naamruimten noemen, wordt de laatste beschrijving in de tabel 'Een kattenlabel met de naamruimte voor dieren. Een naamattribuut met de naamruimte voor de dierentuin.'"

"Herinner je je trouwens dat in Java elke klasse een korte naam heeft en een lange unieke naam die de pakketnaam bevat, die ook wordt opgegeven bij het importeren van het pakket?"

"Ja."

"Nou, voorvoegsels hebben ook een unieke lange naam, en die wordt ook gespecificeerd bij het importeren: "

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

" ' xml ns : soap' betekent ' XMLnaamgeving SOAP'"

"U kunt ook de unieke naam instellen van tags die geen voorvoegsel hebben: "

Voorbeeld
<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=…' stelt de naamruimte in voor het lege voorvoegsel. Met andere woorden, het stelt de naamruimte in voor tags zonder voorvoegsel, zoals gegevens in het bovenstaande voorbeeld."

"Je kunt zoveel naamruimten in een document hebben als je wilt, maar elk moet een unieke naam hebben."

"Ik begrijp het. Waarom hebben deze naamruimten zulke vreemde unieke namen?"

"Ze geven meestal een URL aan die verwijst naar een document dat de naamruimte en/of de XML-tags beschrijft."

'Je hebt vandaag veel informatie over me gedumpt. Wat is er nog meer?'

"Er is nog een beetje meer."

"Ten eerste heeft XML een header. Het is een speciale regel die de XML-versie en bestandscodering beschrijft. "Meestal ziet het er zo uit:"

"Meestal ziet het er zo uit:"

Voorbeeld
<?xml-  versie = "1.0"  codering = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<zeep:artikel>
<soap:info/>
</soap:item>
</gegevens>

"Je kunt ook commentaar aan XML toevoegen. Gebruik '<!--' om een ​​commentaar te beginnen. Gebruik '-->' om het te beëindigen."

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

"Ik begrijp het tot nu toe."

"Bepaalde symbolen (< > " &) hebben een speciale betekenis in XML, dus ze kunnen nergens anders worden gebruikt. We kunnen deze beperking omzeilen met een escape-reeks: een reeks tekens die worden gebruikt om andere tekens/symbolen weer te geven. Hier zijn er een aantal:"

Escape-reeks Symbool dat het vervangt
& &
" «
< <
> >
' '

"En hier is een voorbeeld van code ingebed in XML:"

Java-code Java-code in XML
if (a < b)
System.out.println("a is minimum");
<code>
als (a  <  b)
 System.out.println( " a is minimaal " );
</code>

"Uh... Dat ziet er niet mooi uit."

"Herinner je je dat in Java sommige tekens ook zijn ontsnapt? Bijvoorbeeld "\". En dat deze reeks ook twee keer moet worden geschreven bij het schrijven naar een string? Dit komt dus vaak voor."

"OK."

"Dat is alles wat ik heb voor vandaag."

"Hoera. Ik kan eindelijk een pauze nemen."