"Jak leci?"
"Świetnie. Nie mogę narzekać. Dzisiaj Bilaabo opowiedział mi o JavaScript. Oczywiście nie wszystko, ale więcej niż trochę. Oczywiście nadal nie napisałem nic w JS, ale nie sądzę, żeby to było trudny."
„A Ellie opowiedziała mi o serializacji JSON. Wyjaśniłeś też ramy Jacksona i sposób skonfigurowania„ deserializacji polimorficznej ”za pomocą adnotacji”.
„Nie ma mowy! Jesteś teraz sprytny, Amigo! Prawdziwy ogier!”
"A potem trochę!"
„OK. Bierzmy się do pracy. Dziś mamy nowy, ciekawy temat: XML ” .

„XML to standard reprezentacji danych, który może być łatwo odczytany przez ludzi — a jeszcze łatwiej przez programy. Oto przykładowy plik XML:”
<data>
<owner first="Adam" last="Shelton">
<address>London</address>
</owner>
<cat name="Missy" age="15"/>
</data>
„Podstawą XML są znaczniki. Znacznik to słowo w nawiasach ostrych (znaki większe niż i mniejsze niż). Istnieją znaczniki otwierające i zamykające. Każdy znacznik otwierający ma dokładnie jeden odpowiadający mu znacznik zamykający. Znaczniki otwierające mogą mieć atrybuty. "
„Tagi mogą być zagnieżdżane wewnątrz znacznika, tworząc w ten sposób drzewo elementów. Znacznik najwyższego poziomu nazywany jest korzeniem: ma znaczniki podrzędne, które z kolei mają własne znaczniki podrzędne”.
„Oto kilka przykładów:”
Etykietka | Opis |
---|---|
< dane > | Otwieranie znacznika danych |
</ dane > | Zamykający znacznik danych |
<kot imię = " Missy " wiek = " 15 "> | Znacznik z atrybutami. Wartości atrybutów są ujęte w cudzysłowy |
<data> <właściciel> <imię kota = "Missy"/> </ właściciel > </data> |
Zagnieżdżone tagi. |
< imię kota = "Missy" wiek = "15" /> | Samozamykająca się etykieta. Takie tagi nie wymagają tagów zamykających. I nie mogą mieć tagów podrzędnych. |
<info> Tutaj można znaleźć wszelkie informacje </info> |
Znacznik może zawierać dane tekstowe |
<info> Wszelkiego rodzaju <data xxx = "yyy"> </data> informacji <data 2xxx = "yyy"/> można przejść tutaj </info> |
Znacznik może zawierać dane tekstowe przeplatane innymi znacznikami. |
„Wygląda na łatwe. Jakie są rodzaje tagów?”
„Wszystkiego rodzaju. Nie ma zarezerwowanych tagów. XML to język do opisywania dowolnych danych. Ludzie wymyślają tagi, które spełniają ich potrzeby i uzgadniają, jak ich używać”.
„Zasadniczo XML to sposób zapisywania danych jako drzewa elementów zrozumiałego dla komputera”.
„Myślę, że teraz rozumiem. A tak przy okazji, mam pytanie”.
„JSON służy do wysyłania danych z przeglądarki na serwer, ale gdzie jest używany XML?”
„W tych samych miejscach, w których używany jest JSON: do przechowywania i wysyłania danych”.
— Dobrze, kontynuujmy.
„Wyobraź sobie, że masz jeden wspólny plik XML, który przechowuje dane dla programu napisanego przez dwadzieścia osób. Każda z nich ma własne znaczniki i szybko zaczynają ze sobą ingerować”.
„Aby tagi były unikalne, wymyślono przedrostki. Oto jak wyglądają:”
Tagi | Opis |
---|---|
< zwierzę :kot> | Nieśmiertelnik z prefiksem zwierzęcia |
< zwierzę :kot> </ zwierzę: kot> < zoo :kot> </ zoo :kot> |
Dwa nieśmiertelniki z różnymi prefiksami. |
< zwierzę : kot ogród zoologiczny : nazwa = "MX"> | Nieśmiertelnik z prefiksem zwierzęcia . Atrybut nazwy z przedrostkiem zoo . |
„Przedrostki są również nazywane przestrzeniami nazw. Jeśli nazwiemy je przestrzeniami nazw, to ostatni opis w tabeli będzie brzmiał: „Kot tag z przestrzenią nazw zwierząt. Atrybut nazwy z przestrzenią nazw zoo”.
„Przy okazji, czy pamiętasz, że w Javie każda klasa ma krótką nazwę i długą unikalną nazwę, która zawiera nazwę pakietu, która jest również podawana podczas importowania pakietu?”
"Tak."
„Cóż, prefiksy mają również unikalną długą nazwę, która jest również określana podczas importu: „
< dane xmlns:soap="http://cxf.apache.org/bindings/soap" > < mydło : pozycja > < mydło : informacja / > </ mydło : pozycja > </ dane >
„ xml ns : soap” oznacza „ XML — nazwa tempa SOAP”
"Możesz również ustawić unikalną nazwę tagów, które nie mają prefiksu: "
<data xmlns = "http://www.springframework.org/schema/beans" xmlns: soap = "http://cxf.apache.org/bindings/soap" xmlns:task = "http://www.springframework .org/schema/task" > < mydło :pozycja> < mydło :info/> < zadanie :info/> </ mydło :pozycja> </data>
„'xmlns=…” ustawia przestrzeń nazw dla pustego prefiksu. Innymi słowy, ustawia przestrzeń nazw dla tagów bez prefiksu, takich jak dane w powyższym przykładzie.
„Możesz mieć tyle przestrzeni nazw w dokumencie, ile chcesz, ale każda musi mieć unikalną nazwę”.
„Rozumiem. Dlaczego te przestrzenie nazw mają tak dziwne, unikalne nazwy?”
„Zwykle wskazują adres URL, który wskazuje na dokument opisujący przestrzeń nazw i/lub jej znaczniki XML”.
– Wyrzuciłeś dziś na mnie mnóstwo informacji. Co jeszcze?
– Jest jeszcze trochę.
„Po pierwsze, XML ma nagłówek. Jest to specjalna linia opisująca wersję XML i kodowanie pliku. „Zwykle wygląda to tak:”
„Zwykle wygląda to tak:”
<? wersja XML = kodowanie "1.0" = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<mydło:przedmiot>
<mydło:informacje/>
</mydło:pozycja>
</data>
"Możesz także dodawać komentarze do XML. Aby rozpocząć komentarz, użyj '<!--'. Aby go zakończyć, użyj '-->'."
<?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>
— Jak dotąd rozumiem.
"Niektóre symbole (< > " &) mają specjalne znaczenie w XML, więc nie można ich używać gdzie indziej. Możemy obejść to ograniczenie za pomocą sekwencji ucieczki — zestawu znaków używanych do reprezentowania innych znaków/symboli. Tutaj jest kilka z nich:"
Sekwencja ewakuacyjna | Symbol, który zastępuje |
---|---|
& | & |
" | « |
< | < |
> | > |
' | ' |
„A oto przykład kodu osadzonego w XML:”
Kod Javy | Kod Java w XML |
---|---|
|
<kod> jeśli (a < b) System.out.println( " a to minimum " ); </kod> |
"Uh... To nie wygląda ładnie."
„Pamiętasz, że w Javie niektóre znaki również są zmieniane? Na przykład „\”. I że ta sekwencja musi być również zapisywana dwukrotnie podczas zapisywania w łańcuchu? Jest to więc powszechne zjawisko”.
"OK."
– To wszystko, co mam na dzisiaj.
„Hurra. W końcu mogę zrobić sobie przerwę”.
GO TO FULL VERSION