"調子はどう?"

「素晴らしい。文句は言えません。今日、ビラーボは JavaScript について教えてくれました。もちろんすべてではありませんが、少しだけではありません。もちろん、まだ JS で何も書いていませんが、そうはならないと思います」難しい。"

「そしてエリーは、JSON シリアル化について私に教えてくれました。そして、あなたは、Jackson フレームワークと、アノテーションを使用して「ポリモーフィック逆シリアル化」を設定する方法について説明しました。」

「とんでもない!君は賢くなったよ、アミーゴ!本物のスタッドだ!」

"そしてその後、いくつかの!"

「OK。仕事に取り掛かりましょう。今日は新しくて興味深いトピックがあります。XML です。

XML、XML へのシリアル化 - 1

「XML は、人間が簡単に読み取ることができるデータを表現するための標準であり、プログラムはさらに簡単に読み取ることができます。XML ファイルの例は次のとおりです。」

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

「XML の基礎はタグです。タグは山括弧 (大なり小なり記号) で囲まれた単語です。開始タグと終了タグがあります。各開始タグには対応する終了タグが 1 つだけあります。開始タグには属性を含めることができます。 」

「タグはタグ内にネストすることができ、それによって要素ツリーを作成できます。トップレベルのタグはルートと呼ばれます。ルートには子タグがあり、さらにその子タグが独自の子タグを持ちます。」

"ここではいくつかの例を示します:"

鬼ごっこ 説明
<データ> データタグを開く
</データ> 終了データタグ
<猫の 名前= "ミッシー"年齢= " 15 "> 属性を持つタグ。属性値は引用符で囲まれます
<データ>
<所有者>
<猫の名前 = "ミッシー"/> </所有者> </
データ
>
ネストされたタグ。
<猫の名前 = "ミッシー" 年齢 = "15"  /> 自己終了タグ。
このようなタグには終了タグは必要ありません。
また、子タグを持つことはできません。
<info>
あらゆる種類の情報をここに入力できます
</info>
タグにはテキストデータを含めることができます
<info>
あらゆる種類の
<data xxx = "yyy">
</data>
情報
<data 2xxx = "yyy"/> を
ここに入力できます
</info>
タグには、他のタグが散在するテキスト データが含まれる場合があります。

「簡単そうだけど、どんなタグがあるの?」

「どんな種類でも。予約されたタグはありません。XML はあらゆるデータを記述するための言語です。人々は自分のニーズを満たすタグを思いつき、その使用方法に同意します。」

「本質的に、XML は、コンピューターが理解できる要素ツリーとしてデータを記述する方法です。」

「もう分かった気がします。ところで、質問があります。」

「JSON はブラウザからサーバーにデータを送信するために使用されますが、XML はどこで使用されますか?」

「JSON が使用されるのと同じ場所で、データの保存と送信に使用されます。」

「わかりました、続けましょう。」

「20 人が作成したプログラムのデータを保存する 1 つの共有 XML ファイルがあると想像してください。各自が独自のタグを思いつき、すぐに相互に干渉し始めます。」

「タグが一意であることを保証するために、プレフィックスが発明されました。プレフィックスは次のようになります。」

タグ 説明
<動物:猫> 動物の接頭辞が付いた猫のタグ
<動物:猫>
</動物 :猫>
<動物園:猫>
</動物園:猫>
異なるプレフィックスを持つ2 つのタグ。
<動物: 動物園: name = "MX"> 動物の接頭辞が付いた猫のタグ。動物園の接頭辞を含むname属性。

「接頭辞は名前空間とも呼ばれます。接頭辞を名前空間と呼ぶ場合、表の最後の説明は、「動物の名前空間を持つ猫のタグ。動物園の名前空間を持つ名前属性」になります。

「ところで、Java では各クラスに短い名前と、パッケージ名を含む長い一意の名前があり、パッケージをインポートするときにも指定されることを覚えていますか?」

「はい。」

"そうですね、プレフィックスにも一意の長い名前があり、インポート時にも指定されます。 "

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

「「xml ns :soap」は「XML 名前付きSOAP 」を意味します。」

"プレフィックスのないタグの一意の名前を設定することもできます。 "

<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/> 
<タスク:info/> 
</ soap :item> 
</data>

「'xmlns=…' は、空のプレフィックスの名前空間を設定します。つまり、上の例のデータなど、プレフィックスのないタグの名前空間を設定します。」

「ドキュメント内に必要な数の名前空間を含めることができますが、それぞれに一意の名前を付ける必要があります。」

「なるほど。なぜこれらの名前空間にはこのような奇妙な固有の名前が付いているのでしょうか?」

「これらは通常、名前空間やその XML タグを説明するドキュメントを指す URL を示します。」

「今日、あなたは私について多くの情報をばらまきました。他に何かありますか?」

「まだもう少しあります。」

「まず、XML にはヘッダーがあります。これは、XML のバージョンとファイルのエンコーディングを記述する特別な行です。通常は次のようになります。」

「通常は次のようになります。」

<?xml バージョン= "1.0" エンコーディング= "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<石鹸:アイテム>
<soap:info/>
</soap:item>
</データ>

「XML にコメントを追加することもできます。コメントを開始するには、'<!--' を使用します。コメントを終了するには、'-->' を使用します。」

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

「ここまでは分かりました。」

「特定の記号 (< > " &) は XML で特別な意味を持っているため、他の場所では使用できません。この制限は、エスケープ シーケンス (他の文字/記号を表すために使用される文字のセット) を使用して回避できます。以下にその一部を示します。」

エスケープシーケンス 置き換えられる記号
& &
«
<; <
> >
' '

「そして、これが XML に埋め込まれたコードの例です。」

Javaコード XML の Java コード
if (a < b)
System.out.println("a is minimum");
<コード>
if (a  <  b)
 System.out.println( " a は最小値です" );
</コード>

「うーん…見た目はあまり良くないですね。」

「Java では一部の文字もエスケープされることを思い出してください。たとえば、"\" です。また、このシーケンスは、文字列に書き込むときに 2 回記述する必要があります。つまり、これはよくあることです。」

"OK。"

「今日はこれで終わりです。」

「やったー。やっと休めるよ。」