Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

6. diel - Úvod do formátu XML súborov v Jave

V predchádzajúcom cvičení, Riešené úlohy k 1.-5. lekciu práca so súbormi v Jave, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V minulom dieli nášho seriálu tutoriálov o Jave sme sa venovali textovým súborom. Dnes sa zameriame na formát XML, najprv si ho popíšeme, potom si ukážeme triedy, ktoré nám Java poskytuje k jeho čítania a zápisu.

Formát XML

Teraz vás zahrniem množstvom pojmov, keď niečomu nebudete rozumieť, vôbec to navádza, všetko si tu ešte preberieme :)

XML (eXtensible Markup Language) je značkovací jazyk, ktorý vyvinulo W3C (organizácia, ktorá má na starosti webové štandardy). XML je veľmi univerzálny a je podporované radom jazykov i aplikácií. Slovo extensible (rozšíriteľný) označuje možnosť vytvoriť si pomocou XML vlastný jazyk, tým je napr. XHTML pre tvorbu webových stránok. XML je jazyk samopopisovací, má takú štruktúru, že spoznáme, čo ktorá hodnota označuje. Kým v CSV sa môžeme len domnievať, čo je tá tretia osmička, v XML by nám bolo hneď jasné, že je to počet článkov používateľa (napríklad). Nevýhodou formátu je samozrejme jeho väčšiu veľkosť, čo nám však vo väčšine prípadov nevadí. Osobne takmer vždy pri výbere formátu siaham po XML, hodí sa napr. K uloženiu konfigurácie programu, hiscore hráčov hry alebo k menšej databázu užívateľov. Vďaka XSD schémam ho môžeme jednoducho zvalidovat a predísť chybám pri behu programu.

XML je možné spracovávať hneď niekoľkými spôsobmi. Obvykle jednoduchým kontinuálnym čítaním / zápisom alebo pomocou objektovej štruktúry DOM. Došlo to tak ďaleko, že nám niektoré nástroje umožňujú s XML dokumentom pracovať ako s databázou a volať nad ním otázky (používa sa k tomu jazyk XPath alebo SQL). Asi si dokážete predstaviť, že to uľahčí prácu.

XML konkuruje jednoduchšie, ale menej vymáhateľný JSON. Ten na rozdiel od XML umožňuje jednoduché logovanie na koniec súboru bez načítania celého dokumentu.

XML sa veľmi často používa na výmenu dát medzi rozdielnymi systémami (napr. Desktopovú aplikácií a webovou aplikáciou na serveri), preto ako už bolo spomenuté existuje pre neho mnoho knižníc a každý nástroj ho pozná a vie s ním pracovať. S tým súvisia webové služby, SOAP a podobne, čím sa však teraz nebudeme zaoberať.

Minule sme si uložili užívateľa do súboru CSV. Ukladalo sa meno, vek a dátum registrácie. Hodnoty boli zaradom, oddelené bodkočiarkami. Každý riadok predstavoval jedného používateľa. Obsah súboru vyzeral teda asi takto:

Pavel Slavík;22;21.3.2000
Jan Novák;31;30.10.2012

Nezainteresovaný z toho nič moc nespozná, že? Urobme si teraz ekvivalent súboru vo formáte XML:

<?xml version="1.0" encoding="UTF-8" ?>
<uzivatele>
    <uzivatel vek="22">
        <jmeno>Pavel Slavík</jmeno>
        <registrovan>21.3.2000</registrovan>
    </uzivatel>
    <uzivatel vek="22">
        <jmeno>Jan Novák</jmeno>
        <registrovan>30.10.2012</registrovan>
    </uzivatel>
</uzivatele>

Teraz každý vidí, čo je v súbore uložené. Vek som tu uložil ako atribút len preto, aby som ukázal, že je XML vie, inak by mohol byť ako element spolu s menom a registrovaný. Teraz som teda vyzradil, že jednotlivým prvkom sa hovorí elementy. Tie určite všetci poznáte z HTML, ktoré vychádza z rovnakých základov ako XML. Elementy sú väčšinou párové, teda otváracia, potom nasleduje hodnota a uzatváracie s lomkou. Elementy môžu obsahovať ďalšie elementy, štruktúra je teda stromová. Vďaka tomu nie je problém do jediného XML dokumentu uložiť celú hierarchiu objektov. Na začiatku súboru je XML hlavička. Aby bol dokument validný, musí obsahovať práve 1 koreňový element, tu element uzivatele, v ktorom sú zabalené ďalšie elementy. Atribúty sa píšu za názov atribútu do úvodzoviek.

Určite vidíme, že súbor nám nabobtnal, to je daň za to, že vyzerá pekne. Keby nemal užívateľ atribúty len 3, ale napr. 30, bolo by vidieť, ako CSV formát prestáva stačiť. Osobne sa s pribúdajúcimi skúsenosťami čoraz viac prikláňam k riešeniam, ktoré sú prehľadná a jednoduchá, aj keď napríklad zaberajú viac pamäte (a to nielen v súboroch, ale aj v zdrojovom kóde). Nič nie je horšie, ako keď programátor príde za rok k svojmu programu a vôbec nevie, čo je ten ôsmy parameter v CSV, kde je na riadku 100 nejakých čísel. Alebo čo je to pětirozměrné pole, ktoré je síce hrozne rýchle, ale keby si namiesto neho postavil objektovú štruktúru, nemusel by teraz písať program odznovu. Ale to som odbočil.

Xml v Jave

Budeme sa tu venovať dvoch základným prístupom vo XML. Kontinuálnemu prístupu (tzv. SAX parser) a prístupu objektovému (DOM). Dnešné a budúci diel bude věnovám SAXUM, ďalších domov. Opäť máme Jave viac spôsobov, ako s XML pracovať, existuje tu mnoho tried. Pokúsil som sa tu ukázať to najjednoduchšie a zároveň správne riešenie.

Parsovanie XML cez SAX

SAX (ako Simple API for XML) je vlastne jednoduchá nadstavba čítačky textových súborov. Zápis je pomerne jednoduchý, postupne zapisujeme elementy a atribúty tak, ako idú v súbore zaradom. Stromovú štruktúru tu teda ignorujeme. Java nám poskytuje triedu XMLStreamWriter, ktorá je ďalej obalená triedou SAXParserFactory. Tá nás odtieňuje od toho, že je XML textový súbor. Pracujeme iba s elementmi (presnejšie uzly, viac ďalej).

Čítanie prebieha podobne, ako zápis. XML teda čítame ako textový súbor, riadok po riadku, zhora nadol. SAX nám však nedáva riadky, ale postupne tzv. Uzly (anglicky node), na ktoré pri čítaní postupne naráža. Uzol môže byť element, atribút alebo hodnota. V cykle uzly dostávame tak, ako idú v súbore zaradom. Na čítanie použijeme triedu XMLStreamReader.

Výhodou SAX je vysoká rýchlosť a pamäťová nenáročnosť. Nevýhody spoznáme, až tento prístup porovnáme s objektovým prístupom DOM. Nabudúce si vytvoríme XML súbor pomocou prístupu SAX.


 

Predchádzajúci článok
Riešené úlohy k 1.-5. lekciu práca so súbormi v Jave
Všetky články v sekcii
Práca so súbormi v Jave
Preskočiť článok
(neodporúčame)
Zápis XML súborov Saxe v Jave
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity