"Wie geht's?"

„Großartig. Ich kann mich nicht beschweren. Heute hat mir Bilaabo von JavaScript erzählt. Natürlich nicht alles, aber mehr als nur ein bisschen. Natürlich habe ich immer noch nichts in JS geschrieben, aber ich glaube nicht, dass es so sein wird.“ schwierig."

„Und Ellie hat mir von der JSON-Serialisierung erzählt. Und Sie haben das Jackson-Framework erklärt und erklärt, wie man eine ‚polymorphe Deserialisierung‘ mithilfe von Annotationen einrichtet.“

„Auf keinen Fall! Du bist jetzt schlau, Amigo! Ein echter Hengst!“

„Und noch mehr!“

„OK. Machen wir uns an die Arbeit. Heute haben wir ein neues, interessantes Thema: XML.

XML, Serialisierung in XML - 1

„XML ist ein Standard zur Darstellung von Daten, der von Menschen – und noch einfacher von Programmen – leicht gelesen werden kann. Hier ist eine Beispiel-XML-Datei:“

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

„Die Grundlage von XML sind Tags. Ein Tag ist ein Wort in spitzen Klammern (Größer-als- und Kleiner-als-Zeichen). Es gibt öffnende und schließende Tags. Jedes öffnende Tag hat genau ein entsprechendes schließendes Tag. Öffnende Tags können Attribute haben. "

„Tags können in einem Tag verschachtelt werden, wodurch ein Elementbaum entsteht. Das Tag der obersten Ebene wird als Wurzel bezeichnet: Es verfügt über untergeordnete Tags, die wiederum über eigene untergeordnete Tags verfügen.“

"Hier sind einige Beispiele:"

Schild Beschreibung
<Daten> _ _ Öffnendes Daten-Tag
</ Daten > Schließendes Daten-Tag
<cat  name = " Missy " age = " 15 "> Ein Tag mit Attributen. Attributwerte werden in Anführungszeichen gesetzt
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Verschachtelte Tags.
< Katzenname = "Missy" Alter = "15"  /> Ein selbstschließendes Tag.
Solche Tags benötigen keine schließenden Tags.
Und sie können keine untergeordneten Tags haben.
<info>
Alle Arten von Informationen finden Sie hier
</info>
Ein Tag kann Textdaten enthalten
<info>
Alle Arten von
<data xxx = "yyy">
</data>
Informationen
<data 2xxx = "yyy"/>
können hier angezeigt werden
</info>
Ein Tag kann Textdaten enthalten, die mit anderen Tags durchsetzt sind.

„Es sieht einfach aus. Welche Arten von Tags gibt es?“

„Jede Art. Es gibt keine reservierten Tags. XML ist eine Sprache zur Beschreibung beliebiger Daten. Die Leute entwickeln die Tags, die ihren Bedürfnissen entsprechen, und vereinbaren, wie sie sie verwenden.“

„Im Wesentlichen ist XML eine Möglichkeit, Daten als Elementbaum zu schreiben, den ein Computer verstehen kann.“

„Ich glaube, ich verstehe es jetzt. Übrigens habe ich eine Frage.“

„JSON wird verwendet, um Daten von einem Browser an einen Server zu senden, aber wo wird XML verwendet?“

„An den gleichen Stellen, an denen JSON verwendet wird: zum Speichern und Senden von Daten.“

„Okay, lass uns weitermachen.“

„Stellen Sie sich vor, Sie haben eine gemeinsame XML-Datei, die Daten für ein Programm speichert, das von zwanzig Leuten geschrieben wird. Jeder von ihnen entwickelt seine eigenen Tags, und sie beginnen schnell, sich gegenseitig zu stören.“

„Um sicherzustellen, dass Tags eindeutig sind, wurden Präfixe erfunden. So sehen sie aus:“

Stichworte Beschreibung
< Tier :Katze> Eine Katzenmarke mit dem Präfix „Tier“ .
< animal :cat>
</ animal: cat>
< zoo :cat>
</ zoo :cat>
Zwei Katzenmarken mit unterschiedlichen Präfixen.
< Tier : Katzenzoo  : Name = " MX"> Eine Katzenmarke mit dem Präfix „Tier“ . Ein Namensattribut mit dem Zoo- Präfix.

„Präfixe werden auch Namespaces genannt. Wenn wir sie Namespaces nennen, dann wird die letzte Beschreibung in der Tabelle zu „Ein Katzen-Tag mit dem Tier-Namespace. Ein Namensattribut mit dem Zoo-Namespace.“

„Erinnern Sie sich übrigens daran, dass in Java jede Klasse einen kurzen Namen und einen langen eindeutigen Namen hat, der den Paketnamen enthält, der auch beim Importieren des Pakets angegeben wird?“

"Ja."

„Nun, Präfixe haben auch einen eindeutigen Langnamen, und dieser wird auch beim Import angegeben:

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

„‚ xml ns :soap‘ bedeutet ‚ XML Name Space SOAP ‘“

„Sie können auch den eindeutigen Namen von Tags festlegen, die kein Präfix haben:

Beispiel
<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=…‘ legt den Namespace für das leere Präfix fest. Mit anderen Worten: Es legt den Namespace für Tags ohne Präfix fest, wie z. B. Daten im obigen Beispiel.“

„Sie können in einem Dokument so viele Namespaces haben, wie Sie möchten, aber jeder muss einen eindeutigen Namen haben.“

„Ich verstehe. Warum haben diese Namensräume so seltsame, eindeutige Namen?“

„Sie geben normalerweise eine URL an, die auf ein Dokument verweist, das den Namespace und/oder seine XML-Tags beschreibt.“

„Du hast heute eine Menge Informationen an mich weitergegeben. Was gibt es sonst noch?“

„Da ist noch ein bisschen mehr.“

„Erstens hat XML einen Header. Dabei handelt es sich um eine spezielle Zeile, die die XML-Version und die Dateikodierung beschreibt. „Normalerweise sieht es so aus:“

„Normalerweise sieht es so aus:“

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

„Sie können XML auch Kommentare hinzufügen. Um einen Kommentar zu beginnen, verwenden Sie ‚<!--‘. Um ihn zu beenden, verwenden Sie ‚-->‘.“

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

„Bis jetzt verstehe ich es.“

„Bestimmte Symbole (< > „ &) haben in XML eine besondere Bedeutung und können daher nicht anderswo verwendet werden. Wir können diese Einschränkung mit einer Escape-Sequenz umgehen – einer Reihe von Zeichen, die zur Darstellung anderer Zeichen/Symbole verwendet werden. Hier sind einige davon:"

Fluchtabfolge Symbol, das es ersetzt
&Ampere; &
" «
< <
> >
' '

„Und hier ist ein Beispiel für in XML eingebetteten Code:“

Java-Code Java-Code in XML
if (a < b)
System.out.println("a is minimum");
<Code>
wenn (a  <  b)
 System.out.println( " a ist Minimum " );
</code>

„Äh... Das sieht nicht schön aus.“

„Sie erinnern sich, dass in Java einige Zeichen auch mit Escapezeichen versehen sind? Zum Beispiel „\“. Und dass diese Sequenz beim Schreiben in einen String auch zweimal geschrieben werden muss? Das kommt also häufig vor.“

"OK."

„Das ist alles, was ich für heute habe.“

„Hurra. Endlich kann ich eine Pause machen.“