"Как върви?"

„Страхотно. Не мога да се оплача. Днес Билаабо ми каза за JavaScript. Не всичко, разбира се, но повече от малко. Разбира се, все още не съм написал нищо на JS, но не мисля, че ще бъде труден."

„И Ели ми каза за JSON сериализация. И ти обясни рамката на Jackson и How да настроиш „полиморфна десериализация“ с помощта на анотации.“

„Няма начин! Вече си умен, Амиго! Истински жеребец!“

— И после малко!

„Добре. Да се ​​захващаме за работа. Днес имаме нова, интересна тема: XML.

XML, сериализиране в XML - 1

"XML е стандарт за представяне на данни, които могат лесно да бъдат прочетени от хора - и още по-лесно от програми. Ето примерен XML файл:"

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

„Основата на XML са тагове. Етикетът е дума в ъглови скоби (знаци за по-голямо и по-малко от). Има отварящи и затварящи тагове. Всеки отварящ таг има точно един съответстващ затварящ таг. Отварящите тагове могат да имат атрибути. "

„Етикетите могат да бъдат вложени в таг, като по този начин създават дърво на елементите. Тагът от най-високо ниво се нарича корен: той има дъщерни тагове, които от своя страна имат свои собствени дъщерни тагове.“

"Ето няколко примера:"

Етикет Описание
< данни > Отваряне на етикет с данни
</ data > Затварящ етикет с данни
име на котка = " Миси " възраст = " 15 "> Таг с атрибути. Стойностите на атрибутите са поставени в кавички
<data>
<owner>
<cat name = "Missy"/>
</owner>
</data>
Вложени етикети.
< име на котка = "Миси" възраст = "15"  /> Самозатварящ се етикет.
Такива тагове не се нуждаят от затварящи тагове.
И те не могат да имат дъщерни тагове.
<info>
Тук може да отиде всяHowъв вид информация
</info>
Етикетът може да съдържа текстови данни
<info>
ВсяHowъв вид
<data xxx = "yyy">
</data>
информация
<data 2xxx = "yyy"/>
може да отиде тук
</info>
Тагът може да съдържа текстови данни, осеяни с други тагове.

„Изглежда лесно. Какви видове тагове има?“

"ВсяHowъв вид. Няма запазени тагове. XML е език за описание на всяHowви данни. Хората измислят тагове, които отговарят на техните нужди, и се споразумяват How да ги използват."

„По същество XML е начин за запис на данни като дърво на елементи, което компютърът може да разбере.“

„Мисля, че вече разбирам. Между другото, имам един въпрос.“

„JSON се използва за изпращане на данни от браузър към сървър, но къде се използва XML?“

„На същите места, където се използва JSON: за съхраняване и изпращане на данни.“

— Добре, да продължим.

„Представете си, че имате един споделен XML файл, който съхранява данни за програма, написана от двадесет души. Всеки от тях измисля свои собствени тагове и бързо започват да си пречат.“

„За да се гарантира, че етикетите са уникални, бяха измислени префикси. Ето How изглеждат:“

Етикети Описание
< животно :котка> Таг за котка с префикс животно
< animal :cat>
</ animal: cat>
< zoo :cat>
</ zoo :cat>
Два етикета за котки с различни префикси.
< животно : котешки  зоопарк : име = "MX"> Етикет за котка с префикс животно . Атрибут на име с префикс zoo .

„Префиксите също се наричат ​​пространства от имена. Ако ги наречем пространства от имена, тогава последното описание в tableта става „Етикет за котка с пространство от имена на животни. Атрибут на име с пространство от имена на зоологическа градина.“

„Между другото, помните ли, че в Java всеки клас има кратко име и дълго уникално име, което включва името на пакета, което също се посочва при импортирането на пакета?“

— Да.

„Е, префиксите също имат уникално дълго име и то също се посочва при импортиране:

Пример
< data  xmlns:soap="http://cxf.apache.org/bindings/soap" >
 < soap :item> 
< soap :info/> 
</ soap :item> 
</ data >

"' xml ns :soap' означава ' XMLn name s pace 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/> 
< task :info/> 
</ soap :item> 
</data>

"'xmlns=…' задава пространството от имена за празния префикс. С други думи, задава пространството от имена за тагове без префикс, като данните в примера по-горе."

„Можете да имате колкото искате пространства от имена в един document, но всяко трябва да има уникално име.“

„Разбирам. Защо тези пространства от имена имат толкова странни уникални имена?“

„Те обикновено посочват URL, който сочи към document, който описва пространството от имена и/or неговите XML тагове.“

„Днес ми изсипахте много информация. Какво друго има?“

— Има още малко.

"Първо, XML има заглавка. Това е специален ред, който описва XML versionта и codeирането на file. "Обикновено изглежда така:"

"Обикновено изглежда така:"

Пример
<?xml  version = "1.0"  codeиране = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<сапун:елемент>
<soap:info/>
</soap:item>
</data>

„Можете също да добавяте коментари към 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>

— Дотук разбирам.

"Някои символи (< > " &) имат специално meaning в XML, така че не могат да се използват другаде. Можем да заобиколим това ограничение с екранираща последователност - набор от знаци, използвани за представяне на други знаци/символи. Ето някои от тях:"

Ескейп последователност Символ, който замества
& и
" «
< <
> >
' '

„И ето пример за code, вграден в XML:“

Java code Java code в XML
if (a < b)
System.out.println("a is minimum");
<code>
ако (a  <  b)
 System.out.println( " a е минимум " );
</code>

— Ъъъ... Това не изглежда красиво.

„Сигурно си спомняте, че в Java някои символи също се екранират? Например, „\“. И че тази последователност също трябва да бъде написана два пъти, когато се записва в низ? Така че това е често срещано явление.“

"ДОБРЕ."

— Това е всичко, което имам за днес.

"Ура. Най-накрая мога да си почина."