Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

6. diel - Úvod do formátu XML v Pythone

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

Dnes sa v lekcii Pythonu zameriame na formát XML, najskôr si ho popíšeme, v ďalšej lekcii si ukážeme triedy, ktoré nám Python poskytuje na jeho čítanie a zápis.

Formát XML

Teraz vás zahrniem množstvom pojmov, ale keď niečomu nebudete rozumieť, vôbec to nevadí, 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ý množstvom 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. Zatiaľ čo 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äčšia 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. na uloženie konfigurácie programu, high-score hráčov hry alebo k menšej databáze používateľov. Vďaka XSD schémam ho môžeme jednoducho zvalidovať 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ť podobne ako s databázou a volať nad ním dopyty. Asi si dokážete predstaviť, ako to uľahčí prácu. Takým jazykom na dopytovanie sa nad XML súbormi je napr. XPath.

XML vs. JSON

XML konkuruje formát JSON, ktorý je jednoduchší, ale menej populárny v obchodných aplikáciách. Ten na rozdiel od XML umožňuje ľahké logovanie na koniec súboru bez načítania celého dokumentu. Keďže JSON je skratka z JavaScriptu Object Notation a JavaScript je jazyk primárne webový, nájdeme tento formát najmä vo webových technológiách.

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

Ukážka XML súboru

Minule sme si uložili zoznam používateľov do súboru CSV. Ukladalo sa meno, vek a dátum registrácie. Hodnoty boli za sebou, oddelené bodkočiarkami. Každý riadok predstavoval jedného používateľa.

CSV formát

Obsah súboru vyzeral teda asi takto:

John Smith;22;03/21/2000
James Brown;31;10/30/2012

XML formát

Nezainteresovaný z toho asi nič nespozná, však? Urobme si teraz ekvivalent súboru vo formáte XML:

<?xml version="1.0" encoding="UTF-8" ?>
<users>
    <user age="22">
        <name>John Smith</name>
        <registered>03/21/2000</registered>
    </user>
    <user age="31">
        <name>James Brown</name>
        <registered>10/30/2012</registered>
    </user>
</users>

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 ho 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áracie, potom nasleduje hodnota a uzatvárací tag s lomkou. Elementy môžu obsahovať ďalšie elementy, štruktúra je teda stromová. Vďaka tomu nie je problém do jedné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 <users>, 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, čo je daň za to, že vyzerá pekne. Keby nemal používateľ vlastnosti 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 stále 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, než keď sa programátor vráti o rok k svojmu programu a vôbec nevie, čo je ten ôsmy parameter v CSV, kde je na riadku nejakých 100 čísel. Alebo čo je to päťrozmerné pole, ktoré je síce hrozne rýchle, ale keby si namiesto neho postavil objektovú štruktúru, nemusel by teraz písať program znova.

S XML sme sa teda zoznámili.

V nasledujúcej lekcii, Zápis a čítanie XML súborov v Pythone, sa naučíme, ako dáta v XML formáte zapisovať a ako ich potom aj načítať.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 26x (1.92 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Riešené úlohy k 1.-5. lekcii práce so súbormi v Pythone
Všetky články v sekcii
Práca so súbormi v Pythone
Preskočiť článok
(neodporúčame)
Zápis a čítanie XML súborov v Pythone
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
74 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity