"Comment ça va?"

"Génial. Je ne peux pas me plaindre. Aujourd'hui, Bilaabo m'a parlé de JavaScript. Pas tout, bien sûr, mais plus qu'un peu. Bien sûr, je n'ai toujours rien écrit en JS, mais je ne pense pas que ce serait difficile."

"Et Ellie m'a parlé de la sérialisation JSON. Et vous avez expliqué le framework Jackson et comment configurer la 'désérialisation polymorphe' à l'aide d'annotations."

"Pas question ! Tu es intelligent maintenant, Amigo ! Un vrai étalon !"

« Et puis certains !

"OK. Mettons-nous au travail. Aujourd'hui , nous avons un nouveau sujet intéressant : XML. "

XML, sérialisation en XML - 1

"XML est un standard pour représenter des données qui peuvent être facilement lues par des humains, et encore plus facilement par des programmes. Voici un exemple de fichier XML :"

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

"La base de XML, ce sont les balises. Une balise est un mot entre crochets (signes supérieur à et inférieur à). Il existe des balises ouvrantes et fermantes. Chaque balise ouvrante a exactement une balise fermante correspondante. Les balises ouvrantes peuvent avoir des attributs. "

"Les balises peuvent être imbriquées à l'intérieur d'une balise, créant ainsi une arborescence d'éléments. La balise de niveau supérieur est appelée la racine : elle a des balises enfants, qui à leur tour ont leurs propres balises enfants."

"Voici quelques exemples:"

Étiqueter Description
< données > Ouverture de la balise de données
</ données > Balise de données de fermeture
nom du chat = " Missy " âge = " 15 "> Une balise avec des attributs. Les valeurs d'attribut sont entourées de guillemets
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Balises imbriquées.
< nom du chat = "Missy" âge = "15"  /> Une balise à fermeture automatique.
Ces balises n'ont pas besoin de balises fermantes.
Et ils ne peuvent pas avoir de balises enfants.
<info>
Tout type d'information peut aller ici
</info>
Une balise peut contenir des données textuelles
<info>
Tout type d'informations
<data xxx = "yyy">
</data> <data 2xxx = "yyy"/> peut aller ici </info>



Une balise peut contenir des données textuelles intercalées avec d'autres balises.

« Ça a l'air facile. Quels types de balises existe-t-il ?

"De n'importe quel type. Il n'y a pas de balises réservées. XML est un langage pour décrire n'importe quelle donnée. Les gens trouvent les balises qui répondent à leurs besoins et s'accordent sur la façon de les utiliser."

"Essentiellement, XML est un moyen d'écrire des données sous la forme d'une arborescence d'éléments qu'un ordinateur peut comprendre."

"Je pense que j'ai compris maintenant. Au fait, j'ai une question."

"JSON est utilisé pour envoyer des données d'un navigateur à un serveur, mais où XML est-il utilisé ?"

« Aux mêmes endroits où JSON est utilisé : pour stocker et envoyer des données.

"D'accord, continuons."

"Imaginez que vous ayez un fichier XML partagé qui stocke les données d'un programme écrit par vingt personnes. Chacun d'eux propose ses propres balises et ils commencent rapidement à interférer les uns avec les autres."

"Pour s'assurer que les balises sont uniques, les préfixes ont été inventés. Voici à quoi ils ressemblent :"

Mots clés Description
< animal :chat> Médaille pour chat avec le préfixe animal
< animal :chat>
</ animal: chat>
< zoo :chat>
</ zoo :chat>
Deux étiquettes de chat avec des préfixes différents.
< animal : chat  zoo : nom = "MX"> Médaille pour chat avec le préfixe animal . Un attribut de nom avec le préfixe zoo .

"Les préfixes sont également appelés espaces de noms. Si nous les appelons espaces de noms, la dernière description du tableau devient "Une étiquette de chat avec l'espace de noms d'animaux. Un attribut de nom avec l'espace de noms du zoo.""

"Au fait, vous souvenez-vous qu'en Java, chaque classe a un nom court et un nom unique long qui inclut le nom du package, qui est également spécifié lors de l'importation du package ?"

"Ouais."

"Eh bien, les préfixes ont également un nom long unique, et il est également spécifié lors de l'importation : "

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

"' xml ns : soap ' signifie ' XMLnom SOAP'"

"Vous pouvez également définir le nom unique des tags qui n'ont pas de préfixe : "

Exemple
<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=…' définit l'espace de noms pour le préfixe vide. En d'autres termes, il définit l'espace de noms pour les balises sans préfixe, telles que les données dans l'exemple ci-dessus."

"Vous pouvez avoir autant d'espaces de noms que vous le souhaitez dans un document, mais chacun doit avoir un nom unique."

« Je vois. Pourquoi ces espaces de noms ont-ils des noms uniques aussi étranges ? »

"Ils indiquent généralement une URL qui pointe vers un document qui décrit l'espace de noms et/ou ses balises XML."

"Tu as déversé beaucoup d'informations sur moi aujourd'hui. Qu'est-ce qu'il y a d'autre ?"

« Il y en a encore un peu plus.

"Tout d'abord, XML a un en-tête. C'est une ligne spéciale qui décrit la version XML et l'encodage du fichier. "Il ressemble généralement à ceci :"

"Cela ressemble généralement à ceci :"

Exemple
<?xml  version = "1.0"  encodage = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<savon:item>
<savon :info/>
</savon:item>
</data>

"Vous pouvez également ajouter des commentaires au XML. Pour commencer un commentaire, utilisez '<!--'. Pour le terminer, utilisez '-->'."

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

"Je comprends jusqu'à présent."

"Certains symboles (< > " &) ont une signification particulière en XML, ils ne peuvent donc pas être utilisés ailleurs. Nous pouvons contourner cette restriction avec une séquence d'échappement - un ensemble de caractères utilisés pour représenter d'autres caractères/symboles. En voici quelques uns:"

Séquence d'échappement Symbole qu'il remplace
& &
" «
< <
> >
' '

"Et voici un exemple de code intégré dans XML :"

Code Java Code Java en XML
if (a < b)
System.out.println("a is minimum");
<code>
si (a  <  b)
 System.out.println( " a est minimum " );
</code>

"Euh... Ça n'a pas l'air joli."

"Vous vous souviendrez qu'en Java, certains caractères sont également échappés ? Par exemple, "\". Et que cette séquence doit également être écrite deux fois lors de l'écriture dans une chaîne ? C'est donc un phénomène courant."

"D'ACCORD."

"C'est tout ce que j'ai pour aujourd'hui."

"Hourra. Je peux enfin faire une pause."